Java 如何单击文本为“编辑”的元素?

Java 如何单击文本为“编辑”的元素?,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,我正在尝试使用Selenium WebDriver单击具有以下HTML代码的按钮: <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 / 400

我正在尝试使用Selenium WebDriver单击具有以下HTML代码的按钮:

<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>
我需要通过Aria标签识别,因为所有其他组件都有重复项或更改了编号

我的CSS选择器一定出了问题,但我想不出来

让我知道我是否应该包括错误代码、更多信息,或者我是否在帖子中做了不正确的事情。 谢谢

编辑:aria标签也会更改,HTML上的位置也会更改,因此我无法使用xpath。DebanJanB在下面的回答单击了该元素,但仅当我手动将鼠标悬停在该元素上时才单击。

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

您可以使用class=“uir项目编辑”。在CSS选择器中,您必须使用整数值,如:编辑销售订单:300000/400000。试试这个

我可以给你们解决办法,我知道你们正在寻找CSS的答案,但你们也可以试试下面的xpath解决方案:

driver.findElement(By.xpath(“/*[@class='uir-item-edit'])。单击()

findElement(By.xpath(“//*[@class='uir-item-edit'][@aria label]”)。单击()

findElement(By.xpath(“//*[@aria label='Edit Sales Order:300000/400000'])。单击()

findElement(By.xpath(“/*[contains(text(),'Edit')]”)。单击()

是的,请共享更多错误信息,祝您好运

在文本为“编辑”的元素上单击(),您需要使用
元素可折叠()
,您可以使用以下任一选项:

  • css选择器

    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();
    

*
之前和
=
之后从CSS选择器中删除空白,这样您就可以使用
a[aria标签*='Edit Sales Order']
而不是
a[aria标签*='Edit Sales Order']


中复制、修复和测试您的代码看起来不错。当然可以试试。你会得到什么错误?检查元素是否存在于任何iframe中?当我将鼠标悬停在元素上方时,DebanJanB的答案会单击该元素。所以现在我想知道如何在元素上移动鼠标,但这似乎有同样的问题。让鼠标移动到元素上,问题解决了!让我知道这是否正确:driver.findelelement(By.cssSelector(“a[aria label*='编辑销售订单:300000/400000')))。单击();
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();