select下拉框,二次定位

使用二次定位:
1.定位select里的选项有多种方式,这里先介绍一种简单的方法:二次定位
2.基本思路,先定位select框,再定位select里的选项
3.代码如下
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(10) #隐式等待10秒
mouse=driver.find_element_by_link_text('设置') #鼠标移动到“设置”按钮
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text('搜索设置').click() #点击“搜索设置” #强制等待4秒,注意:这里使用隐式等待或显示等待都将无法获取元素
time.sleep(4)#分两步,先定位下拉框,再点击选项
choice = driver.find_element_by_name("NR")
choice.find_element_by_xpath('//*[@id="nr"]/option[2]').click()
time.sleep(2)
driver.quit()


使用Select模块(index)
1.除了上面介绍的两种简单的方法定位到select选项,selenium还提供了更高级的玩法,导入Select模块。直接根据属性或索引定位。
2.先要导入select方法: from selenium.webdriver.support.select import Select
3.然后通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time#导入select方法
from selenium.webdriver.support.select import Select
driver=webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.implicitly_wait(10) #隐式等待10秒
mouse=driver.find_element_by_link_text("设置") #鼠标移动到"设置"按钮
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click() #点击"搜索设置"
time.sleep(3) #强制等待4秒,注意:这里使用隐式等待或显式等待都将无法获取元素
choice = driver.find_element_by_name("NR")
# 使用Select().select_by_index进行定位
# Select(choice).select_by_index(2)
# Select(choice).select_by_value('20') #Select模块里面除了index的方法,还有一个方法,通过选项的value值来定位:
Select(choice).select_by_visible_text ("每页显示50条")#Select模块里面还有一个更加高级的功能,可以直接通过选项的文本内容来定位
time.sleep(2)
driver.quit()


6. select里面方法除了上面介绍的三种,还有更多的功能如下:
select_by_index()  :通过索引定位
select_by_value()  :通过value值定位
select_by_visible_text() :通过文本值定位
deselect_all()          :取消所有选项
deselect_by_index()     :取消对应index选项
deselect_by_value()      :取消对应value选项
deselect_by_visible_text() :取消对应文本选项
first_selected_option()  :返回第一个选项
all_selected_options()   :返回所有的选项
原文地址:https://www.cnblogs.com/zpdbkshangshanluoshuo/p/10441972.html