我正在尝试等待Selenium切换变化的帧,然后再等待另一个元素。即
var wait = new WebDriverWait(driver, 15);
wait.Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.Id("frameA"));
var wait2 = new WebDriverWait(driver, 15);
// wait for element within frameA to exist
wait2.Until(ExpectedConditions.ElementExists(By.Id("elementA")));
如果我在Thread.Sleep(1000);
第二次等待之前进行一次简单的处理,它的功能就很好,但是如果没有这样做,我会收到以下错误消息:
'unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot find context with specified id"}
enter code here
在等待填充该框架中的元素之前,是否有更好的方法来等待框架上下文切换完成?
您需要考虑以下几点:
切换到框架的代码行看起来很完美,不会引发任何错误:
var wait = new WebDriverWait(driver, 15);
wait.Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.Id("frameA"));
在下一行中,您尝试了 ExpectedConditions 方法 ElementExists 。根据 API Docs
ElementExists
方法的定义为:
An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible.
硒 在元素 可见 之前不能与元素相互作用。因此,您需要使用以下方法
ElementIsVisible
:
var wait2 = new WebDriverWait(driver, 15);
wait2.Until(ExpectedConditions.ElementIsVisible(By.Id("elementA")));
我正在尝试等待Selenium在等待另一个元素之前切换帧。即。 如果我抛出一个简单的之前的第二个等待它的功能很好,但没有我得到以下错误: 在等待填充该框架内的元素之前,是否有更好的方法等待框架上下文切换完成?
我的应用程序中有一个页面,它使用PrimeFaces DataTable来显示人员列表,其中第一列中每个人的小图像。当用户单击作为p:命令链接一部分的小图像时,我使用ajax在p:对话框中更新p: graph icImage,其中包含所选图像的路径,并使用命令链接的完整显示对话框。最后,我使用对话框的onShow将对话框居中。以下是xhtml: 上面的代码工作得很好,但对列表中的小图像和对话框中的
我经常遇到Selenium的问题,脚本崩溃,因为我想访问尚未加载的元素。 目前我是这样做的,我在这些地方之前放了一个,但有时需要更长或更短的时间才能加载元素。 有没有办法等到元素加载完毕,一旦加载,立即继续执行其余的代码?
我正在使用Android Espresso Web测试Android应用程序中的Web视图。它需要一些时间来完成与加载网站。在对元素执行单击操作之前,我需要等待它显示出来。我能用什么API吗?我不想使用sleep()方法。
问题内容: 我试图让Selenium等待页面加载后动态添加到DOM的元素。试过这个: 如果有帮助,这里是: 但是它抛出一个-看起来像期望元素存在,所以这是有缺陷的。这一定是Selenium的面包和黄油,不想重新发明轮子……任何人都可以提出其他选择,理想情况下不用自己动手做? 问题答案: 需要等待时,您需要异常调用以忽略。 有关更多信息,请参见FluentWait文档。但是请注意,此条件已经在Exp
问题内容: 我正在开发Chrome中的扩展程序,但我想知道:找出元素何时存在的最佳方法是什么?使用纯JavaScript,间隔检查直到元素存在,或者jQuery是否有一些简单的方法来执行此操作? 问题答案: 由于性能问题,不建议将其与其他DOM突变事件一起弃用- 推荐的方法是使用MutationObserver来监视DOM。不过,只有新的浏览器才支持此功能,因此您应该在不可用时退回。