在尝试在JUnit中的jre 1.8上使用Selenium 3.4时,我遇到了一个困扰我的问题。成功获取WebElement后,尝试执行click(),isDisplayed(),sendKeys()和clear()函数都会导致驱动程序连接超时,然后才能完成。我结束了创建以下代码:
@Test
public void canLogIn(){
WebDriver driver = new HtmlUnitDriver();
driver.get("http://"+ip+"/login/loginpage.html");
WebElement username = driver.findElement(By.id("username_div"));
System.out.println("Username to string: "+username.toString());
/*Thread.sleep(6000);*/
if(!username.isEnabled()) fail();
if(!username.isDisplayed()) fail();
username.click();
username.clear();
username.sendKeys("manager");
...
到目前为止,当所有其他元素都被注释掉时,代码已经在username.isDisplayed(),username.click(),username.clear()和username.sendKeys()上超时。但是,username.toString()工作,并显示正确的元素,代码尚未挂起username.isEnabled()。 Thread.sleep()用于测试是否允许加载页面将消除问题,但无济于事。我尝试使用Selenium的JavascriptExecutor执行这些命令,也无济于事。我很好,并且在这一点上真的很难过,你能给我的任何帮助都将不胜感激。
答案 0 :(得分:0)
用户名元素是否可见?也许你可以在打开页面后尝试添加它:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until( ExpectedConditions.visibilityOfElementLocated("username_div"));
你有什么例外吗?