如何使用css selectors操作dropdown的lang-chooser切换为英文语言?
用CSS Selector选中下拉语言选择器英文选项的方法
你已实现的点击展开语言选择器代码如下:
driver.find_element_by_css_selector('#lang-chooser').click()
展开后根据下拉框的DOM结构差异,可选择对应CSS选择器写法选中英文选项:
- 原生
<select>标签结构,英文选项value属性为endriver.find_element_by_css_selector('#lang-chooser option[value="en"]').click() - 自定义下拉框结构,英文选项存在
data-lang="en"属性driver.find_element_by_css_selector('#lang-chooser [data-lang="en"]').click() - 自定义下拉框结构,英文选项
aria-label属性为Englishdriver.find_element_by_css_selector('#lang-chooser [aria-label="English"]').click()
为避免元素未加载完成导致报错,建议添加显式等待,完整示例代码如下:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待语言选择器可点击后展开 WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, '#lang-chooser')) ).click() # 等待英文选项可点击后选中,可根据实际结构替换CSS选择器内容 en_option = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, '#lang-chooser option[value="en"]')) ) en_option.click()
如果是原生select结构,也可以用Selenium内置的Select类操作,不用手动点击展开:
from selenium.webdriver.support.ui import Select lang_select = Select(driver.find_element_by_css_selector('#lang-chooser')) # 根据value属性选中英文 lang_select.select_by_value('en') # 也可以根据可见文本选中 # lang_select.select_by_visible_text('English')
内容的提问来源于stack exchange,提问作者Skndr
相关产品推荐
相关产品推荐

