转载自上海悠悠的博客

一、认识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>

二、二次定位
    1.定位select里的选项有多种方式,这里先介绍一种简单的方法:二次定位

2.基本思路,先定位select框,再定位select里的选项

3.代码如下

4.还有另外一种写法也是可以的,把最下面两步合并成为一步:

driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()

三、直接定位
    1.有很多小伙伴说firebug只能定位到select框,不能定位到里面的选项,其实是工具掌握的不太熟练。小编接下来教大家如何定位里面的选项。
    2.用direbug定位到select后,下方查看元素属性地方,点select标签前面的+号,就可以展开里面的选项内容了。

 

3.然后自己写xpath定位或者css,一次性直接定位到option上的内容。(不会自己手写的,回头看前面的元素定位内容)

 

四、Select模块(index)


    1.除了上面介绍的两种简单的方法定位到select选项,selenium还提供了更高级的玩法,导入Select模块。直接根据属性或索引定位。

    2.先要导入select方法:

from selenium.webdriver.support.select import Select

3.然后通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)

 

五、Select模块(value)
    1.Select模块里面除了index的方法,还有一个方法,通过选项的value值来定位。每个选项,都有对应的value值,如
<select id="nr" name="NR">
<option selected="" value="10">每页显示10条</option>

<option value="20">每页显示20条</option>

<option value="50">每页显示50条</option>


    2.第二个选项对应的value值就是"20":select_by_value("20")

 

六、Select模块(text)
    1.Select模块里面还有一个更加高级的功能,可以直接通过选项的文本内容来定位。


    2.定位“每页显示50条”:select_by_visible_text("每页显示50条")

七、Select模块其它方法
    1.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()   :返回所有的选项

八、整理代码如下:
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 鼠标移动到“设置”按钮
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
# 通过text:select_by_visible_text()
s = driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示50条")

# # 分两步:先定位下拉框,再点击选项
# s = driver.find_element_by_id("nr")
# s.find_element_by_xpath("//option[@value='50']").click()

# # 另外一种写法
# driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()

# # 直接通过xpath定位
# driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()

# # 通过索引:select_by_index()
# s = driver.find_element_by_id("nr")
# Select(s).select_by_index(2)

# # 通过value:select_by_value()
# s = driver.find_element_by_id("nr")
# Select(s).select_by_value("20")

转载于:https://www.cnblogs.com/w770762632/p/8745261.html

人生苦短,我学python之python+selenium select下拉框相关推荐

  1. python select模块安装_python+selenium select下拉选择框定位处理方法

    一.前言 总结一下python+selenium select下拉选择框定位处理的两种方式,以备后续使用时查询: 二.直接定位(XPath) 使用Firebug找到需要定位到的元素,直接右键复制XPa ...

  2. python获取select选中的值_Python3.x:遍历select下拉框获取value值

    Python3.x:遍历select下拉框获取value值 Select提供了三种选择方法: # 通过选项的顺序,第一个为 0 select_by_index(index) # 通过value属性 s ...

  3. selenium webdriver学习(八)------------如何操作select下拉框(转)

    selenium webdriver学习(八)------------如何操作select下拉框 博客分类: Selenium-webdriver 下面我们来看一下selenium webdriver ...

  4. layui怎么给下拉框赋值_layui给select下拉框赋值

    转: layui给select下拉框赋值 //重新渲染表单函数 function renderForm() { layui.use('form', function() { var form = la ...

  5. JQ实现三个Select下拉框互斥

    2019独角兽企业重金招聘Python工程师标准>>> 目的:三个select下拉框中的内容相同,当其中一个下拉框选中了其中一个值后,隐藏掉另外两个下拉框中相同的值. html: & ...

  6. select下拉框设置边框样式

    select下拉框设置边框样式方法:设置select下拉框margin:-2,这样可以隐藏原来边框,然后设置父对象样式即可! <span style="border:1px solid ...

  7. 给select下拉框设置高度

    给select下拉框设置高度 效果: select属性: onmousedown="if(this.options.length>4){this.size=4}" onblu ...

  8. layui 下拉框空选项不显示_layui下select下拉框不显示或没有效果

    Layui会对select.checkbox.radio等原始元素隐藏,从而进行美化修饰处理.但这需要依赖于form组件,所以你必须加载 form,并且执行一个实例.值得注意的是:导航的Hover效果 ...

  9. select下拉框美化

    http://dl.dbank.com/c04csxtesr 基本用法 单选下拉框的写法与传统的一样.支持TAB键打开和上下箭头选择option.支持onchange事件,见下面 选中项:2 代码如下 ...

最新文章

  1. Android之linux基础教学之七 中断下半部之软中断
  2. 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
  3. STM8S105系列单片机管脚复用配置(选项字节的配置)
  4. mysql网络安装教程_详细教程--MySQL的安装与配置
  5. 介绍Jupyter和Pandas
  6. 1622: [Usaco2008 Open]Word Power 名字的能量
  7. 谷歌员工确诊,全球顶级开发者大会F8取消!WHO将新冠肺炎全球风险级别升至最高...
  8. 帝友系统:中国P2P网络借贷可否复制Lending Club模式?
  9. 分布式消我爬取豆瓣10万短评,告诉你《复仇者联盟4》在讲什么?
  10. Python求解非齐次线性方程组代码
  11. linux设置开机自启动网络,linux设置开机自启动
  12. Matlab学习篇之s-function
  13. excel 操作技巧
  14. mysql 幂函数_MySQL-函数
  15. IIS MIME设置
  16. java存储字节_Java字节与字符流永久存储json数据
  17. pg 百万数据表 添加序号 20秒轻松搞定
  18. Oracle not in 范围超过 1000 报错问题及解决方案
  19. URL 重写就是把URL地址重新改写(汗^_^)。
  20. 认生、内敛不等同于孤独症[图]

热门文章

  1. 2019百度之星初赛1
  2. 深入SQL SERVER 2000的内存管理机制
  3. webconfig中注册HttpHandler报错:检测到在集成的托管管道模式下不适用的 ASP.NET 设置。...
  4. char* 和char[] 内存分配的区别(转载)
  5. JUC.Condition学习笔记[附详细源码解析]
  6. java.lang.ExceptionInInitializerError
  7. 微信小程序实现支付功能
  8. python分析nginx日志
  9. Kinect V2 基础教程之彩色图像
  10. 如何使用ping命令检查网络故障