下拉列表包括:非 select 元素 和 select 元素两种
非 select 元素:通过文本值定位元素,建议直接进行点击操作
下拉列表未显示属性值为:display:none
下拉列表显示属性值为:display: block
select 元素使用 select 类来处理
是select 一定会有 option;通过下标方式选元素、value属性选元素、文本内容选元素
需要引入 select 类:
from selenium.webdriver.support.select import Select
Select 类里面的方法行为:
初始化 webelement 传进来的是元素对象,并且是构造函数,必须是 Select 对象,如果不是会抛异常元素对象的标签名的小写不=select,就会抛出不期望的标签名异常
options:返回属于此选择标记的所有选项的列表
select_by_value:通过 value 值来获取 select 列表的标签名; (译:歪留)
select_by_index:通过 下标 来获取 select 列表的标签名; (译:in戴克斯的)
select_by_visible_text:通过 可见的文本内容 来获取 select; (译:为则bou)
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import time from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select # select元素操作类 driver = webdriver.Chrome() driver.get("http://www.baidu.com") # 找到元素 ele = driver.find_element_by_xpath('//div[@id="u1"]//a[@name="tj_settingicon"]') # # 1、鼠标悬浮操作,实例化 ActionChains(driver).move_to_element(ele).pause(0.5).click(ele).perform() # ele.click() # 下拉列表:非select元素 loc = (By.XPATH, '//a[text()="高级搜索"]') WebDriverWait(driver, 20).until(EC.visibility_of_element_located(loc)) driver.find_element(*loc).click() # 下拉列表:select元素 Select类 select_loc = (By.XPATH, '//select[@name="ft"]') WebDriverWait(driver, 20).until(EC.visibility_of_element_located(select_loc)) ele = driver.find_element(*select_loc) # Select(driver.find_element(*select_loc)).select_by_index(3) # 从0开始 # time.sleep(3) s = Select(ele) # 第一步,实例化对象 # 三种方式选择下拉属性: # 下标方式选元素,从0开始 s.select_by_index(3) # (译:因代克斯的) # s.deselect_by_index() # 不选中 time.sleep(3) # value属性选元素 s.select_by_value("all") # s.deselect_by_value() # 不选中 time.sleep(3) # 文本内容选元素:下拉框文本值内容 s.select_by_visible_text("微软 Powerpoint (.ppt)") # s.deselect_by_visible_text("下拉框文本内容") # 不选中