2016-03-05 29 views
4

很多時候我想讓webdriver等待兩個元素之一的存在。通常情況下,這發生在我期望頁面在某些情況下顯示element1或元素2.目前我使用兩個等待按順序執行此操作,但效率不高,因爲我需要等待兩次。有什麼辦法可以將兩個等待合併成一個嗎?換句話說,我想等到元素1或元素2出現。硒等到兩個元素之一存在

try: 
    element = WebDriverWait(self.browser, 15).until(EC.presence_of_element_located((By.ID, "elem1"))) 
    element.click() 
    return "elem1" 
except: 
    print "failed to find elem1" 

try: 
    element = WebDriverWait(self.browser, 5).until(EC.presence_of_element_located((By.ID, "elem2"))) 
    return "elem2"  
except: 
    print "sth wrong!" 
    raise Exception("Sth Wrong!") 

return "Should not get here"  

回答

0

沒有測試,但你可以嘗試像

element = WebDriverWait(self.browser, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#elem1, #elem2"))) 

在選擇逗號是OR

2

你可以使用lambda

WebDriverWait(driver,15).until(
    lambda driver: driver.find_elements(By.ID,"Id1") or driver.find_elements(By.ID,"Id2"))