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

Selenium将等待HTML元素更改

阴阳
2023-03-14

我正试图从网站上获取预订数据。进入现场后,我必须:

  1. 将默认日期范围(起初,网站显示默认日期范围的预订数据)更改为我想要搜索的日期范围
  2. 点击刷新按钮
  3. 等待html" target="_blank">网站更新页面上显示的结果。

使用Selenium、Python和BeautifulSoup,当我执行Selenium命令更新日期范围的字段并单击“刷新”按钮时,当代码到达我使用BeautifulSoup提取HTML数据的行时,将提取默认网站日期范围的默认预订数据,而不是我填写的日期范围的预订数据。

根据观察,站点似乎在使用Selenium时移动过快,无法提取更新的数据,这需要一些时间才能加载。我试图用驱动程序解决这个问题。隐式地等待(5),但这会返回高度不一致的结果。

我想检测一个HTML元素,该元素允许无错误的稳定提取。我意识到当我点击“刷新”按钮时,这个特定的元素。。。

<div id="textArea" style="visibility: visible; display: block;">

... 更改为。。。

<div id="textArea" style="visibility: hidden; display: block;">

... 然后变回。。。

<div id="textArea" style="visibility: visible; display: block;">

...当页面上的预订数据更新时。

在进入Python代码的下一行之前,是否有一个Selenium命令可以检测到这种更改?例如,单击“刷新”按钮后,是否会出现“等待样式=可见性可见”命令?

共有1个答案

苏涵润
2023-03-14
while True:
    a = driver.find_element_by_id('textArea').get_attribute('style')
    if a == r"visibility: hidden; display: block;"
        break
    else:
        time.sleep(.05)
while True:
    a = driver.find_element_by_id('textArea').get_attribute('style')
    if a == r"visibility: visible; display: block;"
        break
    else:
        time.sleep(.05)

这将等待它变为不可见,然后在程序执行任何操作之前变为可见

 类似资料:
  • 等待元素出现在网页上的最佳方式是什么?我已经读到,我们可以使用隐式等待和功能,如网络驱动程序wait,流利的等待等,最后但不是最不重要的线程.sleep()...我使用最多,但想停止使用。 我的场景: 用户登录到网站…网站检查凭据,并以叠加的形式向用户提供报价(一种弹出窗口,但不是单独的窗口)。我需要验证叠加图上的文字。用户登录和显示覆盖之间存在时间间隔。最好的方法是什么,以便硒只等待元素不可见的

  • 我经常遇到Selenium的问题,脚本崩溃,因为我想访问尚未加载的元素。 目前我是这样做的,我在这些地方之前放了一个,但有时需要更长或更短的时间才能加载元素。 有没有办法等到元素加载完毕,一旦加载,立即继续执行其余的代码?

  • 问题内容: 单击特定按钮时-我的测试站点将打开模式窗口。 但是模式窗口的打开是不同的 两者都有不同的标题,不同的选项和不同的位置。现在我应该等到模态。 是否可以等到任一模态窗口(WebElement)可见? 我已经在WebDriverWait方法中进行搜索,但是所有方法都必须等到特定WebElement可见或可单击为止。 我找不到更好的方法来等到任何一个都可见。 您能提出一种解决这种情况的方法吗?

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

  • 当我点击一个按钮时,它会显示一个带有另一个按钮的表单,我想点击其中一个。这是一个视频(非常短),请观看http://screencast.com/t/zyliSemW1s1 所以我点击“买票”按钮,简单如下: 然后我等待下一个按钮被点击。 我使用下一个代码: 之后,我点击我等待的按钮: 我得到错误:元素在这一点上是不可点击的。 据我所知,该方法预期的条件。ElementToBeClickable(

  • 我有一个动态加载的页面,其中包含一个按钮。我正在尝试等待selenium使用C#绑定点击按钮。我有以下代码: 不过这不管用。click事件永远不会被触发。selenium脚本不会抛出异常警告ID为“addInspectionButton”的元素不存在。它只是不能点击它。如果我加一根线。Sleep(3000)在wait语句和我获得按钮元素句柄的那一行之间。 我没有使用预期条件.元素在这里正确点击吗?