gpt4 book ai didi

javascript - Selenium /Chromedriver : Can't find element in iframe

转载 作者:行者123 更新时间:2023-11-29 16:04:18 25 4
gpt4 key购买 nike

我正在通过 Protractor 使用 Selenium/Chromedriver。我正在切换到 iframe,等待内容加载,然后计划操作其中的元素。但它永远不会识别出内容已加载。

browser.driver.switchTo().frame("myView");

browser.driver.wait(function() {
return browser.driver.isElementPresent(by.id("myDiv"))
.then(function (isPresent) {
return isPresent;
});
}, 20000, "Taking too long to load!");

myDiv 肯定会在 20 秒内出现,但 wait() 超时。

我已经尝试切换到使用 browser.driver.findElement(),但得到了相同的结果。

我已确保已更新到 Chromedriver 2.21(修复了之前的错误)。

还有什么我可能做错的想法吗?

每个评论的预计到达时间:这就是我得到的错误日志...

   Message:
Error: Taking too long to load!
Wait timed out after 20069ms
Stacktrace:
Error: Taking too long to load!
Wait timed out after 20069ms
==== async task ====
Taking too long to load!
at /Users/me/Documents/My-Test/specs/myWorkflow.js:82:20
==== async task ====
at [object Object].<anonymous> (/Users/me/Documents/My-Test/specs/myWorkflow.js:79:14)
==== async task ====
Asynchronous test function: it()
Error
at [object Object].<anonymous> (/Users/me/Documents/My-Test/specs/myWorkflow.js:7:5)
at Object.<anonymous> (/Users/me/Documents/My-Test/specs/myWorkflow.js:5:1)

最佳答案

我通过添加 sleep 语句而不是使用等待循环来解决类似问题。在 c# 中我会使用 thread.sleep(20000);等待 20 秒。我的大部分都在 1 到 5 秒范围内。

澄清一下:我建议删除他用来检查元素的循环,而是使用简单的 sleep 类型命令,然后与元素交互。

在使用 C# 的 Selenium 中,我使用以下语句在单击元素之前加载元素时提供固定的等待时间。这个元素恰好是一个链接,但它可以是任何元素

      //sleep time so UX can load
Thread.Sleep(3000);

//open the new form
By newButton = By.XPath("/dummy/xpath");
IWebElement button = driver.FindElement(newButton);
button.Click();

关于javascript - Selenium /Chromedriver : Can't find element in iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35439685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com