如何等待选项加载-硒

时间:2020-08-21 17:30:20

标签: python selenium selenium-webdriver

我之前已经看过这个问题很多次了,但是我尝试了它的建议,但似乎无济于事。这是我要进入https://www.iccf.com/tables的网站,我想遍历每个“选择类别”选项。到目前为止,我有这个:

import selenium
import sys
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import shutil
from time import sleep
import traceback

PATH = '---'
driver = webdriver.Chrome(PATH)

driver.get('https://www.iccf.com/tables')
   
categorys_1 = Select(WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'ContentPlaceHolder1_ddlHeaders1'))))
categorys_2 = Select(WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'ContentPlaceHolder1_ddlHeaders2'))))
categorys_3 = Select(WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'ContentPlaceHolder1_ddlHeaders3'))))
categorys_4 = Select(WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'ContentPlaceHolder1_ddlHeaders4'))))

for index_1 in range(1, len(categorys_1.options)):
    categorys_1 = Select(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "ContentPlaceHolder1_ddlHeaders1"))))

    categorys_1.options[index_1].click()
    print(categorys_1.options[index_1].text)
    
    for index_2 in range(1, len(categorys_2.options)):
        categorys_2 = Select(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "ContentPlaceHolder1_ddlHeaders2"))))

        categorys_2.options[index_2].click()
        print(categorys_2.options[index_2].text)

        
        for index_3 in range(1, len(categorys_3.options)):
            categorys_3 = Select(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "ContentPlaceHolder1_ddlHeaders3"))))

            categorys_3.options[index_3].click()
            print(categorys_3.options[index_3].text)

                
            for index_4 in range(1, len(categorys_4.options)):
                categorys_4 = Select(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "ContentPlaceHolder1_ddlHeaders4"))))

                categorys_4.options[index_4].click()
                print(categorys_4.options[index_4].text)

但是当我使用相同的代码多次运行它时,似乎出现了不同的错误,这使我相信错误正在发生,因为我在页面加载时正在检查选项。但是我输入了以下代码行:Select(WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.ID, 'ContentPlaceHolder1_ddlHeaders2')))),我认为这将等待选项加载然后单击它们,但我想不是,所以您会怎么做?

请注意,该站点有时会显示2或3或4个“选择类别”部分,具体取决于您选择的选项。

非常感谢您的帮助。

0 个答案:

没有答案