Selenium + python:等待样式的变化

时间:2016-03-07 14:47:50

标签: python selenium webdriver

在页面上,我有一个HTML元素,它会在几秒钟(几分钟)之后发生变化:

<div style="opacity: 1; width: 100%;" id="progressbar-overlay" class="wings-progressbar-overlay"></div>

为:

<div style="opacity: 0; width: 0%;" id="progressbar-overlay" class="wings-progressbar-overlay"></div>

它是装载机的一部分。 我想等到这个元素发生变化。

我已尝试过这个:

element = self.check_element(By.ID, "progressbar-overlay", "Progressbar wasn't displayed", tekst)

    for x in range(0, 120):
        if element.value_of_css_property("opacity")==1:
            print element.value_of_css_property("opacity") + " not yet"
        else: 
            print element.value_of_css_property("opacity") + " end"
            break

但结果是:

  

1 en。

     

23.021s中的Ran 1测试

     

行   d

为什么它不起作用以及如何等待这个元素的改变?

1 个答案:

答案 0 :(得分:2)

请参阅以下示例。此函数将等到第二个div出现在DOM中。

import time
...
...
def wait_for_complete_page_load(browser, total_wait=100):
    try:
        elem = browser.find_element_by_xpath('//div[contains(@style, "opacity: 0")]')
    except:
        total_wait -= 1
        time.sleep(2)
        if total_wait > 1: wait_till_page_loaded(browser, total_wait)