如何使用 Selenium 和 Java 定位具有相同 class 的元素

How to locate the element that has the same class using Selenium and Java

我无法找到具有相同 class

的 BI 仪表板窗格的正确元素
<a class="mi-title" deatta-no-in="inTitleShowed('folder')" daetta-ni-href="" data-ng-bind="navverTreeItemScope.listItem.title" style="" xpath="1">Staging - ALCDE</a>`

它们看起来都像上面的元素,唯一改变的是仪表板名称 Staging - ALCDE

你可以试试这个:

WebElement elmt = driver.findElement(By.xpath("(//*[@class='mi-title'])[1]"));

[1]更改为[2]等,如果有多个,这是元素的编号。

您也可以使用此 xpath 来识别元素

driver.findelement(By.xpath("//*[@data-ng-bind='navverTreeItemScope.listItem.title']"))

正如您提到的唯一改变的是仪表板名称Staging - ALCDE所以您必须引入WebDriverWait 用于 elementToBeClickable() 并且您可以使用以下任一项 :

  • linkText:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Staging - ALCDE"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='mi-title' and text()='Staging - ALCDE'][starts-with(@data-ng-bind, 'navverTreeItemScope')]"))).click();