selenium自动化-下拉列表

39 篇文章 0 订阅
4 篇文章 0 订阅


selenium自动化获取对象时,肯定会涉及到下拉列表,项目中遇到的下拉列表:通过select/option标签实现 或者ul/li标签实现,记录一下两种实现方式如何获取下拉列表的值

select/option标签

针对select标签类型的不能通过点击事件选择值,需要使用Select模块,其中有三种选中值的方式

  • select_by_index(index):通过下标选择
  • select_by_value(value):通过option标签的value值来选择
  • select_by_visible_text(text):通过option标签的文本内容来选择

举个例子

  • 本地编写一个test.html文件,内容如下
<html>
<body>
<select name="cars" size="1" autofocus="Saab">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
<option value="volvo1">Volvo1</option>
<option value="saab1">Saab1</option>
<option value="fiat1">Fiat1</option>
<option value="audi1">Audi1</option>
<option value="volvo2">Volvo2</option>
<option value="saab2">Saab2</option>
<option value="fiat2">Fiat2</option>
<option value="audi2">Audi2</option>
<option value="volvo3">Volvo3</option>
<option value="saab3">Saab3</option>
<option value="fiat3">Fiat3</option>
<option value="audi3">Audi3</option>
<option value="volvo4">Volvo4</option>
<option value="abc">Saab4</option>
<option value="fiat4">Fiat4</option>
<option value="audi4">Audi4</option>
<option value="foo">Bar</option>
</select>
 </body> 
</html>
  • 访问test.html,获取对应的值,代码如下
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

driver=webdriver.Chrome()
driver.get("file:///C:/Users/Administrator/Desktop/test.html")
select_elem=WebDriverWait(driver,10,0.5).until(ec.visibility_of_element_located((By.XPATH,'/html/body/select')))
x=Select(select_elem)
x.select_by_index(10)
x.select_by_value('foo')
x.select_by_visible_text('Audi4')
driver.quit()

ul/li标签

  • 针对这类下拉列表使用点击事件就可以实现
  • 对于下拉内容较多,需要滚动才显示的值,可以通过js实现
    以csdn的分类专栏下拉为例子,需要选择下拉列表底部的robot framework
    在这里插入图片描述

验证js是否能选中未显示的值

  • 先打开f12,在console中通过js操作一下看能否选择到
    robot framework对象,如图操作在这里插入图片描述

结论

可以看出即使下拉列表的值没有显示出来,通过js也可以选中
因此在编写代码的时候一样,先获取到robot framework对象,再执行js进行点击

python代码实现

select_elem=WebDriverWait(driver, 5).until(
            EC.element_to_be_clickable((By.XPATH, "//span[contains(.,'robot framework')]")))
driver.execute_script('arguments[0].click()', select_elem);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值