Xpath 的 CasperJS waitUntilVisible

CasperJS waitUntilVisible by Xpath

刚开始使用 CasperJS,编写了一些示例测试。使用 CSS 选择器时一切正常,但我在使用 Xpath 时遇到问题。我想使用 xpath 的唯一原因是创建一个更有弹性的定位器,即

'//a[text()="Office Building"]' 对比 css 版本:#content > div > div > div > div:nth-child(1) > a

这是我试过的(注意:我已经在浏览器控制台测试过这个xpath)

试过直接通过

casper.waitUntilVisible('//a[text()="Office Building"]');

尝试将定位器明确指定为 Xpath:

casper.waitUntilVisible({
    type: 'xpath',
    path: '//a[text()="Office Building"]'
});

并尝试从模块 as documented here:

中请求助手 selectXPath
var x = require('casper').selectXPath;
casper.waitUntilVisible(x('//a[text()="Office Building"]'))';

所有这些都会导致超时错误 Wait timeout of 30000ms expired, exiting.,因为元素永远不会 "found"。有什么想法吗?

如果您只获得文本作为标识符等待并在 casperjs 中单击 link 而不使用 xPath,这可能是一个解决方案。
等待文本再使用clickLabel更简单(如果文本是唯一的):

casper.start('http://yourTestUrl.com');

casper.then(function() {
    casper.waitForText('Office Building');
});

casper.then(function() {
    casper.clickLabel('Office Building');
});

casper.run();