如何使用Selenium和Java定位具有相同类的元素
我找不到具有相同类的BI仪表板窗格的适当元素如何使用Selenium和Java定位具有相同类的元素,java,selenium,xpath,webdriverwait,xpath-1.0,Java,Selenium,Xpath,Webdriverwait,Xpath 1.0,我找不到具有相同类的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您可以尝试以下
<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]
等,如果有多个元素,则这是元素的编号。您可以尝试以下操作:
WebElement elmt = driver.findElement(By.xpath("(//*[@class='mi-title'])[1]"));
将
[1]
更改为[2]
等,如果有多个元素,则这是元素的编号。您也可以使用此xpath来标识元素
driver.findelement(By.xpath("//*[@data-ng-bind='navverTreeItemScope.listItem.title']"))
还可以使用此xpath来标识元素
driver.findelement(By.xpath("//*[@data-ng-bind='navverTreeItemScope.listItem.title']"))
正如您所提到的,唯一需要更改的是仪表板名称,即Staging-ALCDE,因此您必须为元素引入WebDriverWait以使其可伸缩()
,并且您可以使用以下任一项:
: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();
元素引入WebDriverWait以使其可伸缩()
,并且您可以使用以下任一选项:
: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();