1

How to click on a href link in Nightwatch?

The href text is identical to each other so I can't use XPath text.

I tried:

browser.useXpath().click("//a[href='./basket/removeItem.html?id=5de6710f75a5750f3d88495b')]");

but that doesn't work.

kjhughes
  • 106,133
  • 27
  • 181
  • 240
Jaap Joop
  • 23
  • 5

2 Answers2

1

At minimal, correct your XPath to add @ in front of the href attribute and remove the spurious ):

//a[@href='./basket/removeItem.html?id=5de6710f75a5750f3d88495b')]
    ^add                                                        ^delete

If id variation is a problem, exclude it via starts-with():

//a[starts-with(@href, './basket/removeItem.html')]

If there are multiple such @href attributes on the page, you can select one via indexing (as shown by @Christine, +1):

//a[starts-with(@href, './basket/removeItem.html')][1]

Actual problem

OP added a link to an image (ugh) of the HTML that shows that the targeted a link is in the document by virtue of a ::before CSS pseudo element. In such cases, the element doesn't actually exist in the DOM to be selected as usual.

See also:

kjhughes
  • 106,133
  • 27
  • 181
  • 240
0

You can use the index in XPath to pick either the first or second link.

For the first link:

//a[@id='tst_remove_from_basket'][1]

For the second link:

//a[@id='tst_remove_from_basket'][2]
CEH
  • 5,701
  • 2
  • 16
  • 40