Selenium操作下拉框报错:'WebElement'无select_by_visible_text属性
解决Selenium下拉框选择报错问题
报错原因
select_by_visible_text是Selenium Select类的专属方法,你直接给WebElement对象调用这个方法,自然会触发AttributeError——WebElement本身没有这个属性。
修复后的代码
需要先把下拉框的WebElement实例包装成Select对象,再调用选择方法:
from selenium import webdriver 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 from selenium.webdriver.support.ui import Select # 仅保留这一个Select导入即可 import time PATH = "/usr/local/bin/chromedriver" driver = webdriver.Chrome(PATH) driver.get("https://www.kumon.com/AnswerBook/AnswerBookLogin.aspx") # 登录操作 acc = driver.find_element_by_id("txtStudentID") name = driver.find_element_by_id("txtPassword") acc.send_keys("id") name.send_keys("pass") name.send_keys(Keys.RETURN) # 处理下拉框 driver.implicitly_wait(4) drop_element = driver.find_element_by_id("drpLevel") select = Select(drop_element) select.select_by_visible_text('G')
注意:你代码里重复导入了Select,删掉其中一个即可(推荐保留from selenium.webdriver.support.ui import Select)。
更稳健的写法(推荐)
用显式等待确保下拉框元素可交互,避免页面加载延迟导致的异常:
from selenium import webdriver 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 from selenium.webdriver.support.ui import Select import time PATH = "/usr/local/bin/chromedriver" driver = webdriver.Chrome(PATH) driver.get("https://www.kumon.com/AnswerBook/AnswerBookLogin.aspx") # 登录操作 acc = driver.find_element_by_id("txtStudentID") name = driver.find_element_by_id("txtPassword") acc.send_keys("id") name.send_keys("pass") name.send_keys(Keys.RETURN) # 显式等待下拉框可点击 wait = WebDriverWait(driver, 10) drop_element = wait.until(EC.element_to_be_clickable((By.ID, "drpLevel"))) select = Select(drop_element) select.select_by_visible_text('G')
内容的提问来源于stack exchange,提问作者yavda
相关产品推荐
相关产品推荐

