我如何检测屏幕上的元素,因为有时它带有不同的格式使用selenium java?

zf9nrax1  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(109)

我正在尝试检测屏幕上可能具有不同索引的元素,有时可以像(//input[@value='OK'])[1]这样检测到,有时可以用(//input[@value='OK'])[2]检测到,没有其他方法可以使此元素唯一,因为多个元素的开发相同,但每次都将以不同的格式显示,有没有办法检查一下是第一个还是第二个索引检测到的,然后按一下。我试着尝试和捕捉,但是没有用

try{
    while(true) {
        new WebDriverWait(driver, 5)
                .ignoring(ElementNotVisibleException.class, NoSuchElementException.class)
                .until(ExpectedConditions.visibilityOf(driver.findElement(element))))
                .click();
    }
} catch (Exception ignored){ }
jvidinwx

jvidinwx1#

试试这个

if(driver.findElements(By.xpath("xpath1")).size()!=0)
{
 driver.findElement(By.xpath("xpath1")).click
}
else if(driver.findElements(By.xpath("xpath2")).size()!=0)
{
 driver.findElement(By.xpath("xpath2")).click
}
kwvwclae

kwvwclae2#

调查一下,看看你是否能写出对这两种情况都有效的相对xpath。如果写不出来,你可以使用一个xpath条件运算符来合并这两个值,比如//*[@id='notify-containe' or contains(@id,'notify-container')]

相关问题