当前位置: 首页 > 知识库问答 >
问题:

webdriver sendKeys不等待页面加载

樊胜
2023-03-14

我对selenium webdriver有问题,如果有人能帮助我,我将非常感激

环境:

  • 硒服务器独立-2.31.0.jar / 硒-服务器-独立-2.35.0.jar
  • IE驱动程序服务器.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函数,但我没有找到它

我知道我没有提供太多信息,因为我正在运行测试的应用程序是内部的,所以我不能分享调试的链接。但是,任何可以帮助我弄清楚正在发生的事情的想法或以前遇到类似问题的经验都将不胜感激。

现在,我必须同时发送密钥并单击以实现预期的结果。

共有2个答案

茅曾琪
2023-03-14

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

万铭
2023-03-14

无论何时执行<code>。单击按钮或链接上的()会调用类似“waitTillPageLoads()”的内部方法,因此webdriver会等待下一页完全加载。

我曾经经历过一个场景,由于web应用程序太慢,页面加载需要等待近10-15分钟。听起来我知道。

然而,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%。

请查看我在IE上无法运行Selenium脚本的答案。

 类似资料:
  • 我试图创建一个等待加载页面的方法,但我出现了一个错误。可能我没有正确使用这个方法。 错误是:

  • 本文向大家介绍jQuery EasyUI 页面加载等待及页面等待层,包括了jQuery EasyUI 页面加载等待及页面等待层的使用技巧和注意事项,需要的朋友参考一下 下面一个代码片段是 easyUI 页面加载等待,代码如下所示: 下面看个工具类 基于easyui的页面等待提示层,即mask 效果图: 以上所述是小编给大家介绍的jQuery EasyUI 页面加载等待及页面等待层,希望对大家有所帮

  • Selenium的SafariDriver似乎不会等待网页加载。我的测试如下: 如果您使用或运行此功能,它将正常运行,即搜索“您好世界”,然后在结果页面上转到图像结果。 使用,它会失败: 找不到的元素是“Images”,因为页面在运行该语句之前没有加载。 这是预期行为吗?我应该是狩猎旅行的特例吗?

  • 问题内容: 我编写了一个脚本,该脚本从页面中获取数据,但是有时页面需要花费一些时间来加载,因此当将html拉到汤对象中时,有时它什么也不会拉,因为页面仍然需要完成。 我编写了以下代码以等待页面完成。 有用 但是调用函数时出现以下错误; 问题答案: 我认为您应该这样使用: 如手册所述。

  • 问题内容: 使用Selenium2Driver将Behat与Mink结合使用时,是否有办法可靠地等待页面加载? 我继承了一些旧的测试,像这样等待: 即仅此一次测试就需要1分钟30秒。 我想做的是有一种通用的方式来等待上一次单击以导致页面加载,而不必每次都等待大量固定的时间。 我可以看到等待页面加载的所有建议,都涉及检查是否已加载特定页面元素。 但是,这些测试是针对各种传统网站运行的,这些网站中并不

  • 问题内容: 您如何使Selenium 2.0等待页面加载? 问题答案: 您还可以使用以下代码检查页面加载