2
我使用CasperJS来测试我的前端,并且创建了一个名为“Brand New Name”的新元素“foo”,并且已经存在'foo'元素。我需要使用XPath来选择具有正确名称的特定元素,以便我可以使用Casper测试它是否存在。与CasperJS一起使用XPath
这是我在做什么目前:
this.test.assertExists(x('//*[@class="foo" and text()="Brand New Name"]'), 'new thing exists')
但这没有找到我想要什么,我究竟做错了什么?
更新1
这是我收到的Casper.JS失败消息,即使xPath
选择看起来是正确的。
FAIL new category exists
# type: assertExists
# file: ../../../foo/test/casper/foo_manager/new_category.js
# subject: false
# selector: {"type":"xpath","path":"//*[@class=\"foo\" and contains(text(), \"Brand New Category\")]"
我已经意识到,事实上在我试图选择元素的span
。我试图说明这一点,但我不能让xPath
CasperJS选择器工作。我已将xPath
选择器更新为contains
,但它仍不起作用。
的选择是这样的:
this.test.assertExists(x('//*[@class="foo" and contains(text(), "Brand New Category")]'), 'new category exists')
有问题的元素看起来是这样的:
<a href='#' class='foo' id='foo-bar'>
Brand New Category
<span>some text</span>
</a>
谢谢您的回答@Badacadabra,我已经更新了我的问题,我仍然有,如果你的问题可以看看?谢谢 – hlatshaw
我已经使用新的XPath选择器测试了您的新HTML结构,并且它正在工作。当您使用Casper进行测试时,请确保该元素已加载。这可能是一个时间问题... – Badacadabra
元素是绝对加载的,我可以截屏casper并显示。此外,我改变了测试搜索一个特定的ID而不是按类和文本,它通过了,但我仍然无法通过使用类和文本传递 – hlatshaw