apa*_*ana 8 selenium selenium-webdriver
很多时候我希望webdriver等待两个元素之一的存在.通常情况下,当我期望页面在某些情况下显示element1或元素2时会发生这种情况.目前我正在使用两个等待顺序执行此操作,但由于我需要等待2次,因此效率很低.有没有办法把两个等待合二为一?换句话说,我想等到element1或element2出现.
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"
Run Code Online (Sandbox Code Playgroud)
小智 10
你可以做一个OR
driverWait.until(ExpectedConditions.or(
ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.something")),
ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.anything"))));
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以使用lambda
WebDriverWait(driver,15).until(
lambda driver: driver.find_elements(By.ID,"Id1") or driver.find_elements(By.ID,"Id2"))
Run Code Online (Sandbox Code Playgroud)
未测试,但您可以尝试类似
element = WebDriverWait(self.browser, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#elem1, #elem2")))
Run Code Online (Sandbox Code Playgroud)
选择器中的逗号是OR
.
归档时间: |
|
查看次数: |
4655 次 |
最近记录: |