selenium:select下拉框

这篇具有很好参考价值的文章主要介绍了selenium:select下拉框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下两种导的包没有任何本质区别。ui包就是调用Select包中的select方法。

from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import Select

**选择下拉选项:**select类提供了3种方法某一选项的方法,分别是:

  • 通过index选择下拉选项——select_by_index(index);
  • 通过value值选择下拉选项——select_by_value(value);
  • 通过可见的text选择下拉选项——select_by_visible_text(text)。

**取消下拉选项:**select类提供了4种方法某一选项的方法,分别是:

  • 通过index选择下拉选项——deselect_by_index(index);
  • 通过value值选择下拉选项——deselect_by_value(value);
  • 通过可见的text选择下拉选项——deselect_by_visible_text(text);
  • 全部取消——deselect_all()。

返回选项:

  • 返回所有选项——options;
  • 返回第一个选项——first_selected_option;
  • 返回所有选中项——all_selected_options。

判断select选项是否可多选:

  • is_multiple,返回一个布尔值

选择下拉框的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>select 下拉列表</title>
</head>
<body>
<select id = "S1ID">
<option></option>
<option value ="o1" id = "id1">o1</option>
<option value ="o2" id = "id2">o2</option>
<option value ="o3" id = "id3">o3</option>
</select>
</body>
</html>
from selenium import webdriver
from selenium.webdriver.common.by import By
import os
from time import sleep

file_path = os.getcwd()+os.sep+"myhtml6_2.html"
driver = webdriver.Chrome()
driver.get(file_path)
s1 = Select(driver.find_element(By.ID,"S1ID"))
s1.select_by_index(1)
sleep(2)
s1.select_by_value("o3")
sleep(2)
s1.select_by_visible_text("o2")
sleep(2)
driver.quit()

Note:

  • index从0开始
  • value是<option>标签的一个属性值,并不是显示在下拉列表中的值
  • visible_text是在<option>和<\option>标签对中间的值,是显示在下拉列表中的值

取消下拉框的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>可以多选select 下拉列表</title>
</head>
<body>
<select id = "S1ID" multiple = "multiple">
<option>请选择:</option>
<option value ="o1" id = "id1">o1</option>
<option value ="o2" id = "id2">o2</option>
<option value ="o3" id = "id3">o3</option>
</select>
</body>
</html>
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
import os


file_path = os.getcwd()+os.sep+"myhtml6_3.html"
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(file_path)
ele = Select(driver.find_element(By.ID,"S1ID"))
ele.select_by_index(1)
sleep(2)
ele.deselect_by_index(1)
sleep(2)
ele.select_by_value("o2")
sleep(2)
ele.deselect_by_value("o2")
sleep(2)
ele.select_by_visible_text("o3")
sleep(2)
ele.deselect_by_visible_text("o3")
sleep(2)
ele.select_by_value("o1")
ele.select_by_value("o2")
sleep(2)
ele.deselect_all()
sleep(2)
driver.quit()

返回选项

from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium import webdriver
from time import sleep
import os

file_path = os.getcwd()+os.sep+"myhtml6_3.html"
drvier = webdriver.Chrome()
drvier.maximize_window()
drvier.get(file_path)
select = Select(drvier.find_element(By.ID,"S1ID"))
sleep(2)
all_options = select.options
print("返回的是:",all_options)
print("")
print("返回数据的数据类型是:{}".format(type(all_options)))
mylist = []
for i in all_options:
    mylist.append(i.text)
print(mylist)
drvier.quit()

输出结果

返回的是: [<selenium.webdriver.remote.webelement.WebElement (session="cace0fdb5748863a770aba459cbbaf42", element="9f7c4c28-e152-4575-be75-1a95538a5f18")>, <selenium.webdriver.remote.webelement.WebElement (session="cace0fdb5748863a770aba459cbbaf42", element="e3b4ae56-6384-4a61-88e2-b37aa233f39b")>, <selenium.webdriver.remote.webelement.WebElement (session="cace0fdb5748863a770aba459cbbaf42", element="64250962-25af-43f4-958a-92db65eaeaaf")>, <selenium.webdriver.remote.webelement.WebElement (session="cace0fdb5748863a770aba459cbbaf42", element="aa86e27b-3b98-453b-b74d-1282069f0591")>]

返回数据的数据类型是:<class 'list'>
['请选择:', 'o1', 'o2', 'o3']

Note:

opions返回的是选项元素,想要获取文字,需要时”.text”

练习需求:循环选择o1,o2,o3

from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
import os


file_path = os.getcwd()+os.sep+"myhtml6_3.html"
driver = webdriver.Chrome()
driver.get(file_path)
select = Select(driver.find_element(By.ID,"S1ID"))
all_options = select.options
for i in range(0,len(all_options)):
    if i == 0:
        continue
    select.select_by_index(i)
    sleep(2)
driver.quit()

获取第一个选项的文字:.first_selected_option

from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium import webdriver
from time import sleep
import os


file_path = os.getcwd()+os.sep+"myhtml6_3.html"
driver = webdriver.Chrome()
driver.get(file_path)
select = Select(driver.find_element(By.ID,"S1ID"))
all_options = select.options
select.select_by_index(2)
select.select_by_index(1)
select.select_by_index(3)
print(select.first_selected_option.text)
driver.quit()

输出结果:o1

Note:我们会发现不管先选中的时哪一个选项,使用first_selected_option方法时返回的都是最上面那个选项。

from selenium.webdriver.support.select import Select
from selenium import webdriver
import os
from time import sleep


file_path = os.getcwd()+os.sep+"myhtml6_3.html"
drvier = webdriver.Chrome()
drvier.get(file_path)
ele = Select(drvier.find_element_by_id("S1ID"))
res = ele.is_multiple
print(res)
drvier.quit()

下面代码中第一个option的text开头有三个空格,第二个option的text中间包含三个空格,第三个option的text中包含了3个’&nbsp’。在HTML中“&nbsp”和空格的区别是,在HTML中没输入一个转义字符’&nbsp’就表示一个空格,输入10个页面就显示10个空格位置。而在HTML代码中不管输入多少个空格,最终页面中显示的空格就只有一个文章来源地址https://www.toymoban.com/news/detail-754289.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>空格示例</title>
</head>
<body>
<select id = "S1ID" multiple ="multiple">
<option>请选择:</option>
<option value ="o1" id = "id1">   With spaces</option>
<option value ="o2" id = "id2">abc   With spaces</option>
<option value ="o3" id = "id3">abc&nbsp;&nbsp;&nbsp;With nbsp</option>
</select>
</body>
</html>
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
import os
from time import sleep


file_path = os.getcwd() + os.sep + "myhtml6_4.html"
driver = webdriver.Chrome()
driver.get(file_path)
sele1 = Select(driver.find_element_by_id("S1ID"))

sele1.select_by_visible_text('With spaces')
sleep(2)
sele1.select_by_visible_text('abc With spaces')
sleep(2)
sele1.select_by_visible_text("abc With nbsp")
sleep(2)
driver.quit()

到了这里,关于selenium:select下拉框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium定位非select标签的下拉框(div/ul/li)

    1.定位下拉框,如果开发者选项是select标签的,我们一般会使用以下方法进行定位:  2.针对不是select属性的下拉框,如果再使用以上方法进行定位并选择可选项,就会报错,例如下拉框是在div标签,div标签下有ul,ul下有li可选项,这时候再使用1中的方法进行定位并选择,就

    2024年02月11日
    浏览(41)
  • Selenium WebDriver对象没有“find_element_by_link_text“属性的解决方案

    Selenium WebDriver对象没有\\\"find_element_by_link_text\\\"属性的解决方案 当使用Selenium的Python绑定进行Web自动化测试时,您可能会遇到以下错误消息:“selenium ‘WebDriver’ object has no attribute ‘find_element_by_link_text’”。这通常是因为使用了不支持的方法或属性。在本文中,我将为您提供解

    2024年02月08日
    浏览(38)
  • 【selenium报错】AttributeError: ‘WebDriver‘ object has no attribute ‘find_element_by_link_text‘

    是因为selenium版本不一致 解决办法如下: 1,换旧版本,即4.几之前的版本 2,将根据元素定位方式的元素改为大写 eg: 报错代码: driver.find_element_ by_xpath (“/html/body/div[3]/div[1]/div[2]/ul/li[1]/a”) 修改后的代码: driver.find_element( By.XPATH ,‘/html/body/div[3]/div[1]/div[2]/ul/li[1]/a’) 这里

    2024年04月23日
    浏览(44)
  • selenium ‘WebDriver‘ object has no attribute ‘find_element_by_link_text‘解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。   本文主要介

    2024年02月12日
    浏览(39)
  • Python|Pyppeteer快速定位select下拉框(10)

    前言 本文是该专栏的第10篇,结合 优质项目案例 持续分享Pyppeteer的干货知识,记得关注。 一般情况下,选中某个select下拉框,会出现一堆可选信息。如下图中的Country列表,点击列表会出现多个国家选择,如下图所示。 比如说,现在需要从这个Country列表中,快速选中某个国

    2024年02月06日
    浏览(26)
  • Python selenium定位动态下拉框

    1、下拉框元素需要点击控件才展示 这里可以使用XPAN定位到下拉框,使用driver.find_element(By.XPATH,“路径”).click()进行点击 2、定位到下拉框里的筛选项元素,每次滚动都会变化 这里的内容要用XPAN定位到//div[@class=“rc-virtual-list-holder-inner”] 然后使用 鼠标滚动的方式,去获取所

    2024年02月12日
    浏览(32)
  • python爬虫之selenium下拉滚动示例

    首先,我们需要明确,在许多网站的滚动页面加载新的内容的时候,是需要进行下拉操作的。这就使得我们需要使用selenium来模拟用户的下拉操作以获取更多的数据。 在selenium中,我们需要引入webdriver库和Keys类。webdriver是一个浏览器自动化驱动程序,而Keys类则用于模拟键盘事

    2024年02月16日
    浏览(43)
  • python爬虫selenium操作下拉框详解

    使用python爬虫的selenium操作网页的下拉框。 以该网站为例:https://www.17sucai.com/pins/demo-show?id=5926 该网页下存在多个可供测试的下拉框。 基本脚手架代码: 定位下拉框(以第一个下拉框为例) Select()方法 不推荐这样定位 选中下拉框,点击 第一个下拉框的可选值如图所示 选择

    2024年02月11日
    浏览(49)
  • 使用 Python Selenium 提取动态生成下拉选项

    在进行网络数据采集和数据分析时,处理动态生成的下拉菜单是一个常见的挑战。Selenium是一个强大的Python库,可以让你自动化浏览器操作,比如从动态生成的下拉菜单中选择选项。这是一个常见的网页爬虫和数据收集者面临的挑战,但是Selenium让它变得简单。 你可以使用

    2024年02月09日
    浏览(52)
  • 使用poco出现Cannot find any visible node by query UIObjectProxy of “xxx“怎么办

    在编写脚本的时候,使用poco的控件识别已经是大家非常喜欢的一种方式,准确度很高,而且也很容上手。 但是有时候会出现下面这种报错,提示 这个时候是不是开始着急了,我明明识别出来这个控件就是这个命名,为什么正式运行的时候就不行了呢? 其实有以下几种原因:

    2024年04月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包