webdriver sendKeys不等待页面加载

时间:2013-09-05 22:42:46

标签: java selenium webdriver selenium-webdriver

我遇到了selenium webdriver的问题,如果有人能帮助我,我将非常感激

环境:

  • selenium-server-standalone-2.31.0.jar / selenium-server-standalone-2.35.0.jar
  • IEDriverServer.exe(试用版本2.28 - 2.35)

示例代码:

WebElement href = this.findElement(By.xpath("//A"));    
href.sendKeys(Keys.ENTER);
href.click();

问题:修复任何一项都可以帮助我

  1. href.sendKeys()成功模拟用户点击,但不等待页面加载
  2. href.click()无法模拟用户点击,但成功等待页面加载
  3. 我已经搜索了.click()方法的源代码,试图手动创建一个waitForPageToLoad函数,但我一直无法找到它。
  4. 我知道我没有提供太多信息,因为我正在运行测试的应用程序是内部的,所以我无法共享调试链接。但是任何有关类似问题的想法或以前的经验可以帮助我弄清楚发生了什么事情会很感激。

    现在,我必须同时执行sendKeys并单击以达到预期效果。

2 个答案:

答案 0 :(得分:3)

每当你对按钮或链接执行.click()时,会调用类似“waitTillPageLoads()”的内部方法,因此webdriver会等到下一页完全加载为止。

我遇到了一个场景,它等待了大约10-15分钟才能加载页面,因为Web应用程序太慢了。我知道这听起来很奇怪。

然而sendKeys()不等待。因为sendkeys不用于点击目的,而是用于输入密钥。

我想你必须有一些强有力的理由

href.sendKeys(Keys.ENTER);

如果您仍想使用此方法,您可以隐式地使用隐式等待等待下一页的元素

WebDriverWait wait = new WebDriverWait(webDriver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath")));

请注意:

你引用

href.click() fails to simulate user click, but successfully wait for page to load

可能是因为您没有将浏览器级别设置为100%。

请在Unable to run Selenium script on IE

查看我的回答

答案 1 :(得分:1)

这里你可以做的是在sendKeys操作之后,使用WebDriverWait对结果页面上的元素进行多次等待。这符合您的目的。