python-web自动化:下拉列表操作

一、认识select
    1.打开百度-设置-搜索设置界面,如下图所示

    2.箭头所指位置,就是select选项框,打开页面元素定位,下方红色框框区域,可以看到select标签属性:
<select id="nr" name="NR">
    3.选项有三个
<option selected="" value="10">每页显示10条</option>
<option value="20">每页显示20条</option>
<option value="50">每页显示50条</option>

 

二:操作

     非select/option元素:

     1.触发下拉列表出现

     2.等待下拉列表中的元素出现,然后进行选择元素即可。

 

 

select/option元素:

下拉框操作-Select类
selenium提供Select类来处理select/option

1.引入

from selenium.webdriver.support.ui import Select

2.创建Select对象,传入元素

ele = driver.find_element_by_xpath(元素定位表达式)
s = Select(ele)

3.选择下拉列表值:

s.select_by_value(value值) #通过value
s.select_by_index(index) #通过下标
s.select_by_visible_text(文本') #通过文本

 

 
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains as AC
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.support.ui import Select

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
time.sleep(3)
# 百度首页,设置链接元素定位
ele = driver.find_element(By.XPATH,"//div[@id='u1']/a[text()='设置']")
# 对设置链接进行鼠标悬浮操作,实例化类,调用悬浮方法,最后进行操作
AC(driver).move_to_element(ele).perform()

# 设置下拉框中选择【高级搜索】,浮窗下拉列表可用click进行点击操作
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//a[text()='高级搜索']")))
driver.find_element_by_xpath("//a[text()='高级搜索']").click()


# 等待高级设置搜索页面可见
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//select[@name="ft"]')))
# 创建Select对象,参数为元素
ele = driver.find_element_by_xpath('//select[@name="ft"]')
s = Select(ele)
s.select_by_value('xls') #通过value
time.sleep(2)
s.select_by_index(1) #通过下标
time.sleep(2)
s.select_by_visible_text('RTF 文件 (.rtf)') #通过文本
 

 

注意:次案例中的高级搜索案例已改成非select下拉框

改后先定位下拉框中的箭头触发下拉列表出现,在操作下拉列表中的元素即可

time.sleep(2)
driver.find_element_by_xpath('//span[@id="adv-setting-ft"]//i[@class="c-icon c-select-arrow"]').click()
driver.find_element_by_xpath('//p[text()="RTF 文件 (.rtf)"]').click()


悬浮下拉列表中的元素如果进行定位,写表达式

  1. 以百度首页为例子,在右上角有设置按钮,鼠标放在设置按钮上,会悬浮显示下拉列表
  2. 定位悬浮列表的内容时,需要先让下拉列表出现,然后再按 shift+ctrl+c 定位下拉列表中的元素;或者出现下拉列表后,右键检查来定位对应的元素

posted on 2020-09-18 12:00  小小小、小鱼儿  阅读(1599)  评论(0编辑  收藏  举报

导航