在CasperJS中使用__utils __。getElementsByXPath查找元素

shaunthomas999

下面是我的casper.js测试脚本的摘录;

var refObject = undefined;

casper.then(function() {
  refObject = this.evaluate(function() {
    return __utils__.getElementsByXPath('//div[contains(concat(" ", @class, " "), " refObject ")]//a[contains(normalize-space(text()), normalize-space("SampleTest"))]//../../../..');
  });
  require('utils').dump(refObject);
  this.echo(refObject);
  test.assertTruthy(refObject);
});

在这里,我在Evaluate函数内部试图引用一个看起来如下的html元素;

<div class="refObject">
    <div class="accordion-heading">
        <div class="accordion-toggle">
            <div class="btn-group">
                <a class="dropdown-toggle" data-toggle="dropdown">SampleTest</a>
            </div>
        </div>
    </div>
</div>

在Google Chrome浏览器(Ctrl + F)中,我测试了xpath并发现引用正确。但是当我执行casperjs脚本时,我得到require('utils').dump(eobject)as[]this.echo(eobject)as的输出为空。有谁知道可能是什么问题?

Artjom B.

这是PhantomJS的问题您不能将DOM元素从页面上下文传递到外部。您必须具有一些原始表示形式。

注意:参数和评估函数的返回值必须是一个简单的原始对象。经验法则:如果可以通过JSON序列化,那就很好。

闭包,函数,DOM节点等将不起作用!

您可以通过返回数组的长度而不是实际列表来检查这是否是问题。

另一个问题可能是匹配a元素后的子搜索使用

normalize-space("SampleTest"))]/../
-------------------------------^

代替

normalize-space("SampleTest"))]//../

您的XPath表达式不必要地复杂,甚至容易出错。这可能更好:

// div [contains(concat(“”,@class,“”),“ refObject”)和.// a [contains(text(),“ SampleTest”)]]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用其innerHTML查找元素

来自分类Dev

使用点击事件查找元素

来自分类Dev

如何使用webdriver查找按钮元素?

来自分类Dev

如何使用WebDriver查找按钮元素

来自分类Dev

如何使用动态ID查找ExtJS元素

来自分类Dev

使用casperjs检查元素

来自分类Dev

使用jQuery查找和隐藏元素

来自分类Dev

在Python中使用minidom查找XML元素的特定路径

来自分类Dev

如何使用Splinter查找元素值?

来自分类Dev

如何在Android中使用元素标签查找xml元素

来自分类Dev

使用JQuery查找和替换子元素

来自分类Dev

CasperJS无法使用CSS选择器或xPath查找元素

来自分类Dev

使用xPath查找时Appium查找错误的元素

来自分类Dev

使用QueryBuilder查找包含元素的数组

来自分类Dev

如何正确使用getElementByXpath和getElementsByXpath?

来自分类Dev

使用Python在Selenium中查找故障元素

来自分类Dev

使用递归函数查找最大元素

来自分类Dev

在C ++中使用STL在数组中查找最小元素

来自分类Dev

在Jmeter中使用Selenium查找网页中的元素

来自分类Dev

在python硒中使用src或href代码查找元素

来自分类Dev

如何使用xpath查找元素?

来自分类Dev

使用ref查找嵌套元素

来自分类Dev

使用casperjs检查元素

来自分类Dev

使用getElementById查找子元素

来自分类Dev

在Selenium中使用父元素查找元素

来自分类Dev

如何使用硒查找元素

来自分类Dev

使用 jquery 查找元素

来自分类Dev

使用 VBA Excel 在 HTML 中使用星号查找元素

来自分类Dev

如何使用 text() 查找元素