2

使用 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")(并且没有其他链接文本)有class="active"

4

1 回答 1

3

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

直到(方法,消息='')

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

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)
于 2013-09-07T13:33:03.850 回答