java - 如何使用 Selenium 通过 HtmlUnitDriver 单击 Primefaces 数据表表行?

标签 java javascript ajax selenium primefaces

下面是示例代码:

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class PrimeFaces {

    public static void main(String[] args) throws Exception {
        HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver(true);
        WebDriverWait wait = new WebDriverWait(htmlUnitDriver,10);
        htmlUnitDriver.get("http://primefaces-rocks.appspot.com/ui/datatableComplex.jsf");
        htmlUnitDriver.findElementById("j_idt44:j_idt45_row_0").click();
        WebElement until = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ui-dialog-title-j_idt44:j_idt59")));
    }

}

此处,id:j_idt44:j_idt45_row_0 表示此页面中找到的第一行:http://primefaces-rocks.appspot.com/ui/datatableComplex.jsf

当您单击此行时,您将看到弹出一个窗口,其中包含 id 为:j_idt44:j_idt59的元素

但是对于 HtmlUnitDriver,此元素不可见,因为我认为 HtmlUnitDriver 没有单击该行,或者没有触发事件监听器。

如何解决这个问题?

最佳答案

似乎是一个时间问题。我使用了以下代码:

driver = new HtmlUnitDriver();
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
driver.get("http://primefaces-rocks.appspot.com/ui/datatableComplex.jsf");

driver.findElement(By.id("j_idt44:j_idt45_row_0")).click();
assert driver.findElement(By.id("j_idt44:j_idt59")).isDisplayed();

对我来说效果很好。

请注意,如果有 10 秒超时,我每次都会失败。

关于java - 如何使用 Selenium 通过 HtmlUnitDriver 单击 Primefaces 数据表表行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28536233/

相关文章:

javascript - 如何在 create-react-app 中创建导入快捷方式/别名?

javascript - Galleria - IE8 中的 imagePosition 问题 (galleria.aino.se)

javascript - ajax 回调后如何从主函数返回 false?

java - 如何解决 "NoClassDefFoundError: Failed resolution of: Landroidx/core/animation/AnimatorCompatHelper;"

java - 在 COMPAS 中定义的任务中找不到文件

java - 调试 "Too many files open"问题

javascript - JS - 骰子掷两次,想要检查循环中是否有双掷

java - 为什么 Hybris 中的促销引擎无法正常工作?

javascript - 隐私 - 跟踪 Chrome 扩展程序的传出 AJAX 查询

ajax - 当缩放更改时,如何使用 OpenLayers 中止未完成的 map 图 block 请求?