我在Selenium上遇到一些问题,我试图找到所有元素,然后尝试使用WebDriverWait:
WebDriverWait(browser, 5).until(
EC.presence_of_element_located((By.XPATH,
"//*[contains(text(), 'Hello')]")))
getAllErrors = WebDriverWait(browser, 5).until(
EC.presence_of_all_elements_located((By.CLASS_NAME, "message")))
for productErrors in getAllErrors:
if 'Sad moments' in productErrors.text:
totalProduct = WebDriverWait(browser, 5).until(
EC.presence_of_element_located((productErrors.find_element_by_xpath("//input[@type='number']"))))
#How to call productErrors and to use WebDriverWait with it?
我想知道如何使用for循环数据以及将WebDriverWait与for循环变量一起使用吗?
基本上类似
for productErrors in getAllErrors:
WebDriverWait(browser, 5).until(EC.presence_of_element_located((productErrors.find_element_by_xpath("//input[@type='number']"))))
#Use productErrors For loop and find the xpath from productErrors
答案 0 :(得分:3)
已经定位的元素没有presence_of
,但是您可以使用visibility_of
wait = WebDriverWait(browser, 5)
for productErrors in getAllErrors:
wait.until(EC.visibility_of(productErrors.find_element_by_xpath("./following-sibling::div//input[@type='number']")))
不要忘记将.
添加到xpath
进行上下文搜索。您也可以一次声明WebDriverWait(browser, 5)
并在各处使用它。