当前位置: 首页 > 面试题库 >

等待Selenium Webdriver进行更改的最佳实践?

薛阳荣
2023-03-14
问题内容

在单击事件之后,我需要等待elements属性更改,然后再继续操作(click事件导致某些元素移出焦点,某些其他元素通过JS获得焦点)

在花了一些时间在Web驱动程序中寻找“
waitForAttribute”(selenium1命令)的可靠替代方法之后,我可以使用下面的代码来工作。但是我不确定这是否是最好的实现…

还有其他更好的解决方案吗?

wait = new WebDriverWait(wedriver1, TimeSpan.FromSeconds(5));
.....
button.Click();
wait.Until(webdriver1 => webdriver2.webelement.GetAttribute("style").Contains("display: block"));

另外,任何人都可以共享一个链接,该链接指向我如何使用WebDriver处理AJAX事件更改。


问题答案:

这是硒的反复出现的问题。我不确定是否存在“最佳”实施。我认为这在很大程度上取决于情况。

关于AJAX驱动的更改,我通常会根据AJAX调用在页面上所做的更改来使用waitForElementPresent或waitForElementNotPresent。



 类似资料:
  • 我实际上有三个问题: Selenium WebDriver如何实现此 因为我们不能给无限睡眠的线程一个负值。 有没有更好的方法来实现无限等待? 我们在SeleniumWebDriver文档中看到了这一点

  • 问题内容: 有时我需要等待一种方法完成,主要是在“加载程序”功能上。这是我这样做的方式: 我忍不住觉得这不是等待a 完成的最佳方法。做这个的最好方式是什么? 问题答案: 如果内没有 异步 代码, 则不是异步代码,例如以下代码: 完成后,您将看到警报。 否则(您内部有异步的东西),可以将循环包装在Promise中: 信用:@ rolando-benjamin-vaz-ferreira

  • 问题内容: 据我所知,并已替换为更好的并发机制。那么,对于实现同步队列,您会选择哪种更好的替代方法呢? 它们究竟在什么意义上“更好”? 编辑 :这(“实现同步队列”)是一个采访问题。可接受的答案不能使用BlockingQueue或其他队列实现。但是,它可能使用其他同步构造,例如CountDownLatch。我没有允许和禁止的类的详尽列表- 请您注意。 问题答案: 已被Lock类方法和Conditi

  • 问题内容: 想象一下,我们必须依靠ajax请求来源。当所有回调都触发时,我想执行一些操作。除了这种方法外,如何做到这一点: 我在这里不喜欢的是,在这种情况下,我无法处理响应失败(例如,我无法设置响应超时)和整体方法(我想应该有一种方法可以使用更多功能)在这里编程) 有任何想法吗? 问候! UPD: 感谢您提供链式回调的解决方案。我在这里找到了一个很好的方法。这是评论中提出的内容: 稍作调整,即可等

  • 我正试图从网站上获取预订数据。进入现场后,我必须: 将默认日期范围(起初,网站显示默认日期范围的预订数据)更改为我想要搜索的日期范围 点击刷新按钮 等待网站更新页面上显示的结果。 使用Selenium、Python和BeautifulSoup,当我执行Selenium命令更新日期范围的字段并单击“刷新”按钮时,当代码到达我使用BeautifulSoup提取HTML数据的行时,将提取默认网站日期范围

  • 如何使用WebDriverWait等到属性更改? 在我的AUT中,我必须等待一个按钮被启用后才能继续,不幸的是,由于开发人员编码页面的方式,我不能使用WebElement的isEnabled()方法。开发人员正在使用一些CSS来使按钮看起来像是被禁用的,这样用户就不能点击它,并且方法isEnabled对我来说总是返回true。所以我要做的就是获得属性“aria-disabiled”,检查文本是“t