Selenium-查找所有元素并将WebDriverWait与for循环一起使用

时间:2019-11-26 10:49:30

标签: python selenium

我在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

1 个答案:

答案 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)并在各处使用它。