下面是针对"python自动化测试selenium操作下拉列表实现"的完整攻略。
1. 确定元素定位方式
在进行自动化测试时,首先需要找到下拉列表所在的元素,以便进行后续的操作。根据HTML的结构和元素特征,可以选择以下几种定位方式:
- ID定位:使用id属性作为元素定位方式,例如:
driver.find_element_by_id('element_id')
- Name定位:使用name属性作为元素定位方式,例如:
driver.find_element_by_name('element_name')
- Xpath定位:使用xpath表达式作为元素定位方式,例如:
driver.find_element_by_xpath('//select[@name="sel_name"]')
2. 点击下拉列表
找到下拉列表所在的元素之后,就可以模拟鼠标点击事件,使下拉列表展开。需要用到click()
方法:
element = driver.find_element_by_name('sel_name')
element.click()
3. 获取下拉列表中的所有选项
下拉列表展开后,就可以获取其中的所有选项,以便后续选择。使用find_elements_by_tag_name()
方法找到下拉列表中的选项元素,然后使用get_attribute()
方法获取选项的值和文本:
options = driver.find_element_by_name('sel_name').find_elements_by_tag_name('option')
for option in options:
print(option.get_attribute('value'), option.text)
其中get_attribute()
方法可以获取元素的属性值,value
属性表示选项的值,text
属性表示选项的文本。
4. 选择指定选项
获取到下拉列表中的选项后,就可以根据自己的需求选择指定的选项。可以根据选项的值或文本进行匹配,使用select_by_value()
和select_by_visible_text()
方法选择指定的选项:
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('sel_name'))
select.select_by_value('option_value')
# 或者
select.select_by_visible_text('option_text')
示例1:选择性别
以百度注册页为例,实现选择性别的自动化测试:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
# 创建Chrome浏览器实例
driver = webdriver.Chrome()
# 打开百度注册页
driver.get('https://passport.baidu.com/v2/?reg&tt=1507514136937&overseas=undefined')
# 选择性别
gender_select = Select(driver.find_element_by_name('sex'))
gender_select.select_by_value('1')
# 关闭浏览器
driver.quit()
这里使用了Select()
方法来进行选项的选择。
示例2:选择城市
以拉勾网城市搜索为例,实现选择城市的自动化测试:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 创建Chrome浏览器实例
driver = webdriver.Chrome()
# 打开拉勾网城市搜索页面
driver.get('https://www.lagou.com/jobs/allCity.html')
# 选择城市
city_select = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@id="content"]/div/ul[1]/li[1]/select')))
city_select = Select(city_select)
city_select.select_by_visible_text('广州')
# 关闭浏览器
driver.quit()
这里使用了WebDriverWait()
方法,等待元素加载出来再进行选择操作,避免了因页面加载慢导致的元素定位失败问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python自动化测试selenium操作下拉列表实现 - Python技术站