selenium中的元素操作之下拉列表操作(四)

下拉列表操作中分为两种:select、非select

1、非select的下拉框操作

非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

# 创建一个Chrome对象
driver = webdriver.Chrome()
# 访问百度
driver.get('http://baidu.com')
# 非select下拉框操作
# 找到百度首页的设置按钮
driver.find_element_by_xpath('//div[@id="u1"]//a[@class="pf"]').click()
# 等待下拉框的出现
loc = (By.XPATH, '//a[text()="高级搜索"]')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc))
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()

# 退出浏览器
driver.quit()

 2、select下拉框操作:

接下来演示select下拉框操作;继续使用百度设置-高级搜索页面来演示,继续接上边代码继续写

selenium中有一个select类,用来操作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
from selenium.webdriver.support.select import Select
import time


# 创建一个Chrome对象
driver = webdriver.Chrome()
# 访问百度
driver.get('http://baidu.com')
# 非select下拉框操作
# 找到百度首页的设置按钮
driver.find_element_by_xpath('//div[@id="u1"]//a[@class="pf"]').click()
# 等待下拉框的出现
loc = (By.XPATH, '//a[text()="高级搜索"]')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc))
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()

# 设置等待,等待select下拉框出现
select_loc = (By.XPATH, '//select[@name="ft"]')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(select_loc))
ele = driver.find_element(*select_loc)

s = Select(ele)
# 以下标的方法定位下拉框中的元素
s.select_by_index(3)
time.sleep(2)
# 以value属性的方式定位下拉框的元素
s.select_by_value('pdf')
time.sleep(2)
# 以文本的方式定位下拉框元素
s.select_by_visible_text('所有格式')
time.sleep(2)

# 退出浏览器
driver.quit()

 

posted @ 2019-09-19 11:41  幸运球与倒霉蛋  阅读(3170)  评论(0编辑  收藏  举报