【问题标题】:Selenium timeout after clicking on an element but page seems to load correctly (ChromeDriver)单击元素后硒超时,但页面似乎正确加载(ChromeDriver)
【发布时间】:2017-04-12 04:51:24
【问题描述】:

我遇到了一个奇怪的问题,我不知道为什么会这样。

我的代码是用 C# 编写的,我正在使用 ChromeDriver

我正在点击一个元素(实际上是发送 SendKey(Keys.ENTER) 但当我使用常规 .Click() 时也会出现同样的问题)

点击似乎可以正常工作(找到该元素,我被重定向到我期望的页面(这是一个使用 SSO 运行的复杂过程))但代码没有继续执行

一段时间后它会抛出异常 http://localhost:7183/session/ca0fc76d263cb413b3a06f69fa5eff7e/element/0.8505282587588259-1/value 120 秒后超时。

如果我使用 FirefoxDriver 或 IEDriver 运行相同的代码,它可以正常工作

【问题讨论】:

    标签: c# selenium timeout selenium-chromedriver


    【解决方案1】:

    您使用的是最新版本的 ChromeDriver 吗? 2.24 中修复了一些发送密钥问题。

    也许试试 js 点击?

    WebElement element = driver.findElement(By.id("gbqfd"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", element);
    

    【讨论】:

    • 我使用的是 2.25。 SendKeys 本身似乎没有问题。我还尝试单击 Javascript 代码(创建一个 JavascriptExecutor,通过 Xpath 找到元素并单击它),在这种情况下,单击工作正常并继续执行,但在下一句我需要使用相同的 WebDriver,它再次超时失败
    • 我在看到这样的奇怪行为时也使用了 js 点击。您可以发布 html 和 click/xpath 代码吗?如果调试它,它工作正常吗?我想知道等待或者这是否可能是 iframe。
    • HTML 有点复杂
    • HTML 有点复杂,是我们使用的第三方页面,所以我不知道它背后的代码的细节,但基本上结构是一个表单,里面有不同的按钮使用这样的XPATH //form//button[text()[contains(.,'foo')]] 因为我需要根据其文本定位按钮,然后单击它单击似乎可以正常工作并且浏览器按预期运行,但代码无法继续,一段时间后我超时
    • 如果你把它改成一个js点击会发生什么?我已经看到了 c# 点击的问题,我使用了 js 点击。将代码添加到答案中。我会调试它,看看它到底在哪里失败。您可能需要稍微更改您的 xpath,或者添加一个移动到元素。
    【解决方案2】:

    我有一个类似的问题,我在 ChromeDriver 执行中设置了这个超时管理器,现在它将等待 60 秒,然后才会出现超时错误。 driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(60);

    【讨论】:

      猜你喜欢
      • 2018-09-13
      • 2019-07-03
      • 2014-02-20
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多