How to click on the element with text as Edit?

Aaron :

I am trying to use Selenium WebDriver to click a button that has the following HTML code:

<a class="uir-item-edit" href="/app/accounting/transactions/transaction.nl?id=400000&amp;e=T" 
id="edit_/app/accounting/transactions/transaction.nl?id=400000" 
aria-label="Edit Sales Order:300000 / 400000 ">Edit</a>

My code:

driver.findElement(By.cssSelector("a[aria-label *= 'Edit Sales Order']")).click();

I need to identify by the Aria Label as all the other components either have duplicates or change w/ the number.

There must be something wrong with my CSS selector, but I can't figure it out.

Let me know if I should include the error codes, more info, or if I did something incorrect w/ the post. Thanks!

Edit: the aria label also changes and the location on the HTML also changes so I can't use xpath. DebanJanB's answer below clicks the element, but only when I manually hover over.

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.uir-item-edit[aria-label^='Edit Sales Order'][id*='transactions']"))).click();
DebanjanB :

To click() on the element with text as Edit you need to use elementToBeClickable() and you can use either of the following Locator Strategies:

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("a.uir-item-edit[aria-label^='Edit Sales Order'][id*='transactions']"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='uir-item-edit' and starts-with(@aria-label, 'Edit Sales Order')][contains(@id, 'transactions') and text()='Edit']"))).click();
    

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=166071&siteId=1
Recommended