Javascript 在不知道css选择器的情况下,如何使用CasperJS单击链接

Javascript 在不知道css选择器的情况下,如何使用CasperJS单击链接,javascript,html,css-selectors,casperjs,Javascript,Html,Css Selectors,Casperjs,一个链接有一个pss.exe,另一个链接有一个psk.exe 内部文本为“更改密码”或“解锁帐户” 那么我如何点击“更改密码”链接呢。A标记没有类或名称,也没有任何简单的方式来使用css选择器。css选择器用途非常广泛。可以基于任意属性的一部分选择元素。因此,单击第一个按钮可以通过以下方式实现: <a href="pss.exe?TRANSACTION=CGI_JUMP&amp;SESSDATA=randomstuff&amp;SKIN=default&amp;LA

一个链接有一个pss.exe,另一个链接有一个psk.exe

内部文本为“更改密码”或“解锁帐户”


那么我如何点击“更改密码”链接呢。A标记没有类或名称,也没有任何简单的方式来使用css选择器。

css选择器用途非常广泛。可以基于任意属性的一部分选择元素。因此,单击第一个按钮可以通过以下方式实现:

<a href="pss.exe?TRANSACTION=CGI_JUMP&amp;SESSDATA=randomstuff&amp;SKIN=default&amp;LANG=en-US">
  Change passwords
</a>

<a href="psk.exe?TRANSACTION=CGI_JUMP&amp;SESSDATA=randomstuff&amp;SKIN=default&amp;LANG=en-US">
  Unlock accounts
</a>
其中
href^=value
查找具有以指定值开头的href属性的元素

您也可以尝试使用CasperJS的clickLabel功能:

casper.click("a[href^='pss.exe']");
它有时不起作用,因为有空格

当然,还有很多方法可以做到这一点。例如,可以使用XPath表达式根据链接元素的文本选择链接元素:

casper.clickLabel("Change passwords");
使用
x
作为XPath帮助工具:

casper.click(x("//a[contains(text(), 'Change passwords')]"));

如果这不起作用,那么你必须确保你在正确的页面上。拍摄一个屏幕截图(
casper.capture(filename)
),看看你是否有。

还有其他CSS属性选择器。我尝试了单击标签,它告诉我它不存在。我添加了一个XPath版本,但我意识到,从对其他问题的评论来看,你可能没有在正确的页面上。你需要弄清楚这是为什么。
var x = require("casper").selectXPath;