selenium (三) 下拉框选项操作

对下拉框操作的方式其实有多种,可以先通过find_elements_by_xpath()获取到下拉框中的所有选项列表,然后在通过
list元素进行click()来选择选项(这是我最初实现对下拉框操作的方式),也可以使用selenium自带的方法实现
下拉框选项的操作。两者其实差不多,不过,个人觉得还是用find_elements_by_xpath()方式更具有扩展性。因为有些
下拉框中的选项中,有可选和不可选的选项时,find_elements_by_xpath()可以通过元素属性过滤掉不可选的选项,将可
选的选项添加到元素列表中,选择的时候就一定能运行成功。至于具体用那种方式,还是要看业务场景的需要。以下就介绍
以下selenium自带的下拉框处理方法。

selenium中有一个类单独提供对下拉框的操作:
from selenium.webdriver.support.ui import Select

获取下拉框的所有选项,返回一个元素列表
Select(selectLabel).options
实例:
element_province = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="province"]‘) #获取select标签
province_Alloptions = Select(element_province).options
area = []
for i in province_Alloptions:
#将下拉框文本值,添加到列表中
area.append(i.text)

for value in area:
#打印下拉框列表的值
print value

获取下拉框的第一个选项,也就是下拉框的默认值
Select(selectLabel).first_selected_option
实例:
element_city = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="city"]‘) #获取select标签
city_options = Select(element_city).first_selected_option
print city_options.text

通过下拉框的value属性值来选择选项:
select_by_value()
实例:
element_province = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="province"]‘)
Select(element_province).select_by_value("140000") #选择value值为:140000选项,通过value值选择选项

通过下拉框的选项索引来选择选项:
select_by_index()
实例:
element_city = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="city"]‘)
Select(element_city).select_by_index(1) #选择第2个选项,通过下拉框索引选择选项

通过下拉框的选项名来选择选项:
select_by_visible_text()
element_county = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="county"]‘)
county_Alloption = Select(element_county).options
Select(element_county).select_by_visible_text(u"古交市")

实例代码:

#-*-encoding:utf-8-*-
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select

driver=webdriver.Chrome()
driver.get("http://localhost:8081/tshop/index.php?con=simple&act=login")

#登录
def login_shop(userName,pwd):
	try:
		element_account=driver.find_element_by_id("account")   #通过id定位
		element_account.send_keys(userName)
		element_password=driver.find_element_by_name("password")  #通过name定位
		element_password.send_keys(pwd)
		element_loginBtn=driver.find_element_by_xpath(‘//button[@class="btn btn-main "]‘)  #通过xpath定位
		element_loginBtn.click()
	except Exception as e:
		driver.save_screenshot(‘F:\\testAndStudy\\test\\login_shop.png‘)

def click_myOrder():
	#点击【我的订单】链接
	sleep(1)
	try:
		element_myOrder=driver.find_element_by_link_text(u"我的订单")
		element_myOrder.click()
	except Exception as e:
		driver.save_screenshot("F:\\testAndStudy\\test\\click_myOrder.png")

def click_personalInfor():
	#点击【个人资料】菜单
	sleep(1)
	try:
		element_personalInfo=driver.find_element_by_link_text(u‘个人资料‘)
		element_personalInfo.click()
	except Exception as e:
		driver.save_screenshot("F:\\testAndStudy\\test\\click_personalInfor.png")

def click_areaOption():
	#点击基本资料页面选择所在地址下拉框
	sleep(1)
	try:
		#选择省份
		element_province = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="province"]‘)
		Select(element_province).select_by_value("140000")    #选择value值为:140000选项,通过value值选择选项

		province_Alloptions = Select(element_province).options
		area=[]
		for i in province_Alloptions:
			#将下拉框文本值,添加到列表中
			area.append(i.text)

		for value in area:
			#打印下拉框列表的值
			print value

		#选择城市
		element_city = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="city"]‘)
		Select(element_city).select_by_index(1)      #选择第2个选项,通过下拉框索引选择选项

		city_options = Select(element_city).first_selected_option
		print city_options.text   #打印第1个选项

		#选择县/区
		element_county = driver.find_element_by_xpath(‘//td[@id="area"]/select[@id="county"]‘)
		county_Alloption = Select(element_county).options
		Select(element_county).select_by_visible_text(county_Alloption[len(county_Alloption)-1].text)   #选择最后一个option的值,通过option值选择选项
		county=county_Alloption[len(county_Alloption)-1].text   #打印选择的选项
		print county

	except Exception as e:
		print e
		driver.save_screenshot("F:\\testAndStudy\\test\\click_areaOption.png")

login_shop(userName="[email protected]",pwd="123456")
click_myOrder()
click_personalInfor()
click_areaOption()

  

业务场景 -->> 完善个人资料:

原文地址:https://www.cnblogs.com/JcHome/p/10802817.html

时间: 2024-11-06 12:35:32

selenium (三) 下拉框选项操作的相关文章

Selenium系列(十) - 针对Select下拉框的操作和源码解读

如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识,需要自己去补充哦,博主暂时没有总结(虽然我也会,所以我学selenium就不用复习前端了哈哈哈...) 首先,将下面html代码保存到一个文件中 后续的代码小案例都是访问此html的<!DOCTYPE html> <html lang="en"> <head&

UI自动化之特殊处理二(弹框\下拉框\选项\文件上传)

弹框\下拉框\选项\文件上传也是一些比较特殊的操作 目录 1.弹框 2.下拉框 3.选项 4.文件上传 1.弹框 弹框有三种形式,value为alert.confirm.prompt三种的弹框,第一个仅可点击确认,第二个可点击取消和确认,第三个可以输入内容再点击取消或者确认 alert:仅需要定位到alert上,然后再确认 m= driver.switch_to_alert() m.accept() confirm:定位到alert,点击取消或者确认 m= driver.switch_to_al

ComboBox连接数据库、显示下拉框选项

?本文从http://blog.csdn.net/susidian/article/details/7027007处学习得来. ?如何将combobox控件绑定数据库,并在下拉框中显示从数据库中查找得到的数据.如何在上一个combobox框中筛选下一个combobox中可以选择的的选项. 贴出代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usi

crm使用soap插入下拉框选项

//C# 代码: //InsertOptionValueRequest request = new InsertOptionValueRequest(); //request.OptionSetName = "new_year"; //request.Label = new Label("2008年", languageCode); //request.Value = 2008; //InsertOptionValueResponse response = (Ins

crm使用soap删除下拉框选项

//C# 代码: //DeleteOptionValueRequest request = new DeleteOptionValueRequest(); //request.OptionSetName = "new_year"; //request.Value = 2008; //DeleteOptionValueResponse response = (DeleteOptionValueResponse)service.Execute(request); //js例子 functi

html年月日下拉联动菜单 年月日三下拉框联动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head><title>年月日三下拉框联动</title>

jq select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性

select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性 $("#IsRecommend").change(function () { var isCheck = $(this).children('option:selected').val(); if (isCheck == "true") { $("#CategoryId").css("display", "

【selenium自动化——下拉框处理】

<html><body><select id="ShippingMethod" onchange="updateShipping(options[selectedIndex]);"name="ShippingMethod"><option value="12.51">UPS Next Day Air ==> $12.51</option><option v

python+selenium 对下拉框的处理

一:固定选择某一选项.利用二次定位的方法,先定位该下拉框,然后定位具体的选项 rzmd = driver.find_element_by_id("zjlx") rzmd.find_element_by_xpath("//option[@value='luhff5fclyys95vz_继续教育']").click() 二:随机选择某一选项.该方法利用的也是重复定位的方法,只是二次定位时定位到的是一组option,通过random.choice()方法随机选择 sele