2014-01-30 33 views
1

我想加載我的驅動程序,直到我的current_url包含「東西」。我已經嘗試了下面的代碼:expected_conditions與硒[Python]

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的新手。

回答

0

我認爲在expected_conditions類不存在一個你想要的定義。但是你可以定義自己的expected_conditions,在這兩個問題提供了有關這個話題很好的解釋:

在任何情況下,你可以使用lambda expressions來定義你的函數WebDriverWait

我希望這可以幫助你。

+0

我是一個新手,並不理解你提到的鏈接。是的,沒有我想要的EC課程。你有其他的鏈接嗎? – Saheb

0

我不太清楚你想要執行的確切測試。無論如何,你可以傳遞一個可調用的並且測試你想要的任何東西。這裏是工作,測試googleblahfoo是否存在於當前URL代碼示例:(很顯然,路徑到Chrome司機必須適應自己的情況)

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() 

一旦condition的返回值爲真值,等待結束。否則,將會產生一個TimeoutException。如果您從("google", ...)刪除"google",您將收到TimeoutException

+0

我正在執行一個表單中的提交操作。提交當前頁面後重定向到另一個頁面。我想獲取重定向頁面的網址。你明白了嗎? – Saheb

+0

我已經更新了我的答案。我曾想象過你可以在''driver.current_url''上做某種測試,但我不確定這是你的想法。無論如何,我的答案充分說明了這一原則。 – Louis