Selenium的[expected]条件[Python]

时间:2014-01-30 11:52:57

标签: python selenium

我想加载我的驱动程序,直到我的current_url包含“某事”。我尝试了以下代码:

self.url = self.driver.current_url
try:
    element = WebDriverWait(self.driver, 20).until(EC.title_contains("XXX", "YYY", "ZZZ"))
except:
    print "\n IMPERFECT URL \n"
finally:
    self.driver.quit()

但是这种方法使用标题搜索..我想检查我当前的URL是否有可能的字符串集。我怎么做?另外,我想在同一个网址中检查三组字符串。有人可以帮忙吗?我是Selenium的新手。

2 个答案:

答案 0 :(得分:0)

我认为在expected_conditions类中不存在你想要的定义。但是你可以定义自己的expected_conditions,在这两个问题中提供了关于这个主题的很好的解释:

在任何情况下,您都可以使用lambda expressionsWebDriverWait中定义您的功能。

我希望这可以帮到你。

答案 1 :(得分:0)

我不太了解你想要进行的测试。无论如何,您可以通过可调用并测试您想要的任何内容。以下是测试当前网址中是否存在googleblahfoo的工作代码示例:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome("/home/ldd/src/selenium/chromedriver")

driver.get("http://google.com")

def condition(driver):
    look_for = ("google", "blah", "foo")
    url = driver.current_url
    for s in look_for:
        if url.find(s) != -1:
            return True

    return False

WebDriverWait(driver, 10).until(condition)

driver.quit()

(显然,Chrome驱动程序的路径必须根据您自己的情况进行调整。)

只要condition的返回值为真值,等待就会结束。否则,将引发TimeoutException。如果您从"google"移除("google", ...),则会获得TimeoutException