python+selenium下拉列表option对象操作方法一

参考官方文档:https://selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.select.html?highlight=all_selected_options#selenium.webdriver.support.select.Select.all_selected_options

一、导入(import)

from selenium.webdriver.support.select import Select

二、选择(select)

Select类提供了三种选择某一选项的方法:

               select_by_index(index)
               select_by_value(value)
               select_by_visible_text(text)

注意:

  1. index从 0 开始
  2. value是option标签的一个属性值,并不是显示在下拉框中的值
  3. visible_text是在option标签中间的值,是显示在下拉框的值

三、反选(deselect)

有选择必然有反选,即取消选择。Select提供了四个方法给我们取消原来的选择:

           deselect_by_index(index)
           deselect_by_value(value)
           deselect_by_visible_text(text)
           deselect_all()

前三种分别于select相对应,第四种是全部取消选择,是的,你没看错,是全部取消。

有一种特殊的select标签,即设置了multiple=”multiple”属性的select,这种select框是可以多选的,

可以通过多次select,选择多项选项,而通过deselect_all()来将他们全部取消。

注意:下面两个,表示的意思一样

                                                           #返回第一个或者当前  被选中  的子项
print(Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).first_selected_option.text)  
                                                            # 输出当前选择的第一项,即显示第二个now = Select(driver.find_element_by_css_selector("body > form > select")).first_selected_optionprint(now.text)

================================================================================

from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChains#from selenium.webdriver.support.select import Selectfrom selenium.webdriver.support.ui import Selectfrom time import sleep

driver = webdriver.Firefox()driver.implicitly_wait(10)driver.get(‘http://www.baidu.com‘)

#--------------------------------------------------------------------------------

link = driver.find_element_by_link_text("设置")ActionChains(driver).move_to_element(link).perform()         #鼠标悬停在上面sleep(5)

driver.find_element_by_class_name("setpref").click()      # 打开搜索设置sleep(2)

#-------------------------------------------------------------------------

sleep(3)print(‘显示第二个子项(2):‘)Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).select_by_index(1)                 #选择第二个options子项 ,每页显示20条print(Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).first_selected_option.text)  #返回第一个或者当前  被选中  的子项

sleep(3)print(‘显示第三个子项(50):‘)Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).select_by_value(‘50‘)              #选择value为‘每页显示50条‘的子项,即选择第三个子项print(Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).first_selected_option.text)  #返回第一个或者当前  被选中  的子项

sleep(3)print(‘显示第二个子项(20):‘)Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).select_by_visible_text(‘每页显示20条‘)   #选择text值为‘每页显示20条‘的子项print(Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).first_selected_option.text)       #返回第一个或者当前  被选中  的子项

sleep(3)print(‘显示当前被选中的子项(第二个子项20):‘)print(Select(driver.find_element_by_xpath("//select[@id=‘nr‘]")).first_selected_option.text)    #返回第一个或者当前  被选中  的子项   #每页显示20条

#-------------------------------------------------------------------------------------
options = driver.find_elements_by_xpath(‘//*[@id="nr"]/option‘)

options[1].click()             #第二个子项被选中sleep(2)

options[2].click()             #第三个子项被选中sleep(2)

options[0].click()            #第一个子项被选中sleep(2)

#-----------------------------------------------------------------------

print(options[0].text)print(options[1].text)print(options[2].text)
#-----------------------------------------------------------------------

driver.quit()


显示第二个子项(2):
每页显示20条
显示第三个子项(50):
每页显示50条
显示第二个子项(20):
每页显示20条
显示当前被选中的子项(第二个子项20):
每页显示20条

每页显示10条
每页显示20条
每页显示50条

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

===============================================================================================================

from selenium import webdriverfrom selenium.webdriver.support.ui import Selectfrom time import sleep

driver = webdriver.Firefox()driver.get("https://www.runoob.com/runcode")             # 打开浏览器,进入演示页面

driver.find_element_by_css_selector("#codeinp").clear()   # 定位输入框文本域  # 清空文本域

                                                               # 输入多选下拉框的演示源码 (multiple="multiple\")texts = "<html> " \        "<body><form><select multiple=\"multiple\" name=\"cars\"><option value=\"volvo\">Volvo</option>" \        "<option value=\"saab\">Saab</option><option value=\"fiat\">Fiat</option>\" \        \"<option value=\"audi\">Audi</option></select></form></body></html>"

driver.find_element_by_css_selector("#codeinp").send_keys(texts)

driver.find_element_by_css_selector("#btrun").click()                 # 点击提交代码sleep(2)

#--------------------------------------------------------------------------------------------------------

all_handles = driver.window_handlesdriver.switch_to.window(all_handles[1])             #切换到新的打开的运行页面

#-------------------------------------------------------------------------------------------------------                                              # 选择全部的选项(多选),一个接着一个选择,直到全部选择

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(0)sleep(1)

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(1)sleep(1)

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(2)sleep(1)

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(3)sleep(1)

#----------------------------------------------------------------------------------------------------------------

                                                                  # 取消选择第一项选项(页面上可以观察到变化)Select(driver.find_element_by_css_selector("body > form > select")).deselect_by_index(0)sleep(1)                                                            # 输出当前选择的第一项,即显示第二个now = Select(driver.find_element_by_css_selector("body > form > select")).first_selected_optionprint(now.text)

                                                                          #取消第二个选项#Select(driver.find_element_by_css_selector("body > form > select")).deselect_by_value(‘\"saab\"‘)Select(driver.find_element_by_css_selector("body > form > select")).deselect_by_visible_text(‘Saab‘)sleep(3)

                                                                              #即取消三、四选项Select(driver.find_element_by_css_selector("body > form > select")).deselect_all()  #取消所有选项sleep(3)

#---------------------------------------------------------------------------------------------------------

driver.close()
 

原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12037310.html

时间: 2024-07-30 19:28:00

python+selenium下拉列表option对象操作方法一的相关文章

python+selenium的WebElement对象操作

webelement对象操作 webelement对象是selenium中所有元素的父类,也就是webelement对象拥有的方法,其它元素对象都会有: 只是不同的对象在调用特定方法时,效果是不一样的,即: 某些方法只是针对特定元素类型有效,而对其它类型无效. (1).clear:清空文本框中的文本,仅仅对有文本输入特性的元素有效:例如:文本框.多行文本框等: (2).click:单击元素,可以通过该方法,让元素获取焦点: (3).find_element系列:查找子元素的方法,同浏览器的fin

Java+Selenium——如何处理日历控件——方法一

如果遇到这样的日期控件,直接把当做正常的文本输入框,然后调用sendKeys()方法,直接传一个带格式的日期数据进入就可以. package rjcs; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Set; import org.openqa.selenium.interaction

python 文件与目录的操作 &nbsp; 未完善 需要重新学习

文件与目录的操作:    -文件读写:python进行文件读写的函数是open或file file_handler = open(filename,mode) mode, 模式 说明 r 只读 r+ 读写 w 写入,先删除原文件,在重新写入,如果文件没有则 创建 w+ 读写,先删除原文件,在重新写入,如果文件没有则创建(可以写入输出) 读范例: >>> fo  = open('/tools/123/test.log')                                   

Python+Selenium笔记(九):操作警告和弹出框

#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一) 前言 开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息.报警信息.执行操作后的返回信息,甚至用来接收输入值等. (二) Alert类 Selenium WebDriver 通过Alert 类来操控 JavaScript 警告. (三) Alert功能及方法 功能/属性 简单

Python的对象操作(一)

python支持对象和函数   1. python是解释型语言,逐行运行 2. 对象调用 例子:删除文件的一个例子 2.1 先定义一个类 class MyApp: 2.2 import 引用要用到的模块 __author__ = 'Bright' import shutil import os """ * 对象操作实战 * 上演出多个文件 """ class MyApp: def __init__(self, root): self.root =

python selenium鼠标键盘操作(ActionChains)

用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains selenium.webdriver.common.action_chains.ActionChains(driver) 这个类基本能够满足我们所有对鼠标操作的需求. 1.ActionChains基本用法 首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行

python selenium系列(三)常用操作类型及方法

一 前言 开展WEB UI自动化的核心思路,无非就是找到元素,然后操作元素这两个内容.在python selenium系列(二)元素定位方式一文中,已经介绍了如何找到元素这项技能,本文将介绍第二项内容,即如何操作已经找到的元素. 二 操作方法分类 总体来说,可以将操作大体分成四类,即浏览器操作.键盘操作.鼠标操作.js脚本. 1.  浏览器常用操作方法: 方法 描述 driver.maximize_window() 窗口最大化 driver.back() 页面返回 driver.forward(

Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. AutoIt介绍 AutoIt简单介绍下,AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务.而这是其它语言不可能做到或无可靠方法实现的(例如VBSc

Python练习题4(列表去重):[5,3,4,&#39;ok&#39;,4,3,&#39;abc&#39;,8,52,&#39;ok&#39;]去除列表中重复内容 方法一:使用set 方法二:不使用set,自己写方法

方法一:利用集合去重 1 list1 = [5,3,4,'ok',4,3,'abc',8,52,'ok'] 2 list1=list(set(list1)) 3 print(list1) 方法二:此方法略微冗余,先判断元素是否重复,再将重复元素提取并保存到新列表中,再for 新建的列表元素,删除原列表 1 def list_dup(ls): 2 list2 = [] 3 length = len(ls) #获取列表元素个数 4 for i in range(0,length-1): 5 for