等到元素处于活动状态,硒

时间:2013-09-07 13:25:24

标签: python selenium-webdriver

使用Selenium webdriver 2,我遇到了以下问题:

我通过

本地化一个元素
find_element_by_link_text("Archive")

未点击时,这是元素的HTML:

<a onclick="Event.GetDataEvent(226780, 'LH', 19, 19, '', 
'http://www.example.com/');" 
href="javascript:void(0);">Archive</a>

点击时,它会变成(注意class="active"):

<a class="active" onclick="Event.GetDataEvent(226780, 'LH', 19, 19, '', 
'http://www.example.com/');" 
href="javascript:void(0);">Archive</a>

我想等待元素为class="active"。我认为要走的路是使用WebDriverWait,但我怎么实际告诉selenium要等到

find_element_by_link_text("Archive")(没有其他link_text)有class="active"

1 个答案:

答案 0 :(得分:2)

使用selenium.webdriver.support.wait.WebDriverWait.until(..)

  

until(method,message ='')

     

将驱动程序提供的方法作为参数调用,直到   返回值不是假的。

from selenium.webdriver.support.wait import WebDriverWait

...

def archive_link_is_active(driver):
    cls = driver.find_element_by_link_text("Archive").get_attribute('class')
    return cls and 'active' in cls

WebDriverWait(driver, 10).until(archive_link_is_active)