所有 XPath 在 CasperJS 中都返回一个不存在的错误



为了清楚起见,我使用的是SpookyJS,这是一个允许无头CasperJS的库。

我可以在所有其他页面上单击并选择其他 XPath,问题仅在特定页面上,页面加载完美,但所有 XPaths 都返回此错误。

无法在不存在的选择器上调度鼠标关闭事件

我在函数尝试单击 xPath 之前截取了屏幕截图,屏幕截图显示页面已完美加载。

如果我尝试使用 waitForSelector 函数,我会收到超时错误,我在不同的页面上尝试了不同的 XPath,但它们都不起作用。

这是我在 CoffeeScript 中的代码不介意spooky.then只是将其视为casper.then

// 3 steps occur before this and they work perfectly
spooky.then([{x:selectXPath}, () ->
  @wait(3000, () ->
    eval(x) // This loads the xPath function
    @capture('server/components/spooky/img.png')
    @click(xPath('//*[@id="wp-page-header-middle"]/table/tbody/tr/td[1]/a'))
  )
])

我感兴趣的表在 iframe 内部。

问题是元素在 iframe 内部。可以选择该元素,但首先需要切换到 iframe 的上下文以对其运行操作。这是通过 withFrame() .您可以按索引或名称选择 iframe。下面是一个按索引(第一个 iframe)显示的示例:

@withFrame(0, () ->
    @click(xPath('//*[@id="wp-page-header-middle"]/table/tbody/tr/td[1]/a'))
)

您可能还需要调整 XPath,因为tbody最初可能不存在于标记中。PhantomJS 1.x 不像现代浏览器那样添加它,因此您可能需要动态执行此操作:

'//*[@id="wp-page-header-middle"]/table//tr/td[1]/a'

最新更新