Selenium WebElement在大多数命令上超时

时间:2017-06-07 20:54:57

标签: java selenium junit

在尝试在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执行这些命令,也无济于事。我很好,并且在这一点上真的很难过,你能给我的任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

用户名元素是否可见?也许你可以在打开页面后尝试添加它:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until( ExpectedConditions.visibilityOfElementLocated("username_div"));

你有什么例外吗?