gpt4 book ai didi

java - 如何使用 Selenium 单击带有 HtmlUnitDriver 的 Primefaces 数据表表行?

转载 作者:行者123 更新时间:2023-11-29 21:52:16 24 4
gpt4 key购买 nike

这是一个示例代码:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com