java - 如何使用 Selenium WebDriver 选择网页上的 2 个元素之一?

标签 java selenium

我正在网页上运行测试,该网页可能包含也可能不包含特定元素。 过程如下:我填写表格,然后单击“搜索”按钮。当浏览器打开一个新的网址时,我需要选择一个element_1,但如果它不存在,我必须选择element_2。

WebElement element = driver.findElement(By.xpath("//....")) || driver.findElement(By.xpath("//..."));
element.click();

//这样不行,还有其他办法吗?是否可以不尝试并捕获?

最佳答案

使用 driver.findElement() 进行隐式等待。因此,即使第二个元素出现,测试也会等待一段时间。相反,在 WebDriverWait 中使用 findElements() 可能是更好的解决方案。

    WebDriverWait wait = new WebDriverWait(driver, 10);
    // Wait for one element to be available
    wait.until(new Predicate<WebDriver>() {
        @Override public boolean apply(WebDriver driver) {
            return driver.findElements(By.cssSelector("xpath1")).size() > 0
                    || driver.findElements(By.cssSelector("xpath2")).size() > 0;
        }
    });
    // Get the element
    WebElement e = null;
    if (driver.findElements(By.cssSelector("xpath1")).size() > 0)
        e = driver.findElements(By.cssSelector("xpath1")).get(0);
    else if (driver.findElements(By.cssSelector("xpath2")).size() > 0)
        e = driver.findElements(By.cssSelector("xpath1")).get(0);

    if (e != null)
        e.click();

关于java - 如何使用 Selenium WebDriver 选择网页上的 2 个元素之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493393/

相关文章:

java - 如何在没有 JRebel 的情况下使用 Eclipse 和 WebLogic 11g 热交换 JSF xhtml 文件?

java - Jfreechart 的 3D 图表

java - Facebook:如何使用 Graph Api 获取好友签到?

google-chrome - 使用 Selenium 另存为 PDF Chrome

java - Eclipse 在报告生成中忽略 CucumberOptions

java - 如何使用 selenium webdriver 发送 cookie?

java - 背景图像在 html 中不起作用

java - android - 阿拉伯语语音识别

C# Selenium ChromeDriver 无效的 --log-level 值。无法初始化日志记录

java - 如何在selenium中显式等待元素中的文本被更改