Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how can I click a link using CasperJS without knowing the css selector

<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>

One link has a pss.exe and the other has psk.exe

The InnerText is "Change Password" or "Unlock Accounts"

so how can I click on the "Change Password" link. The A tag has no class or name or any easy way for me to use a css selector.

like image 308
software is fun Avatar asked Jun 12 '15 12:06

software is fun


1 Answers

CSS selectors are pretty versatile. You can select an element based on a part of an arbitrary attribute. So clicking the first can be achieved this way:

casper.click("a[href^='pss.exe']");

Where href^=value looks for elements with href attributes that begin with the specified value.

You can also try to use CasperJS' clickLabel function:

casper.clickLabel("Change passwords");

It sometimes doesn't work, because of whitespace.

There are of course many more ways to do this. You can for example use an XPath expression to select a link element based on its text:

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

with x being the XPath helper utility:

var x = require("casper").selectXPath;

If this doesn't work, then you have to make sure you are on the correct page. Take a screenshot (casper.capture(filename)) and see if you are.

like image 151
Artjom B. Avatar answered Oct 31 '22 14:10

Artjom B.