selenium 常见操作,下拉列表操作

  下拉列表包括:非 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 列表的标签名
  • select_by_visible_text:通过 可见的文本内容 来获取 select
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)
# time.sleep(3)
s = Select(ele)

# 三种方式选择下拉属性:
# 下标方式选元素
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("下拉框文本内容")     # 不选中

猜你喜欢

转载自www.cnblogs.com/shouhu/p/12221742.html