Selenium常用控件实战

处理下拉列表

《Python实现Web UI自动化测试实战:Selenium 3/4+unittest/pytest+gitlab+jenkins》读书笔记
导包:
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.select import Select

操作步骤
  1. 实例化 Select
    Select(driver.find_element())
  2. 选择下拉框选项
    select_by_index(index)
    select_by_value(value) :通过value值选项下拉选项
    select_by_visible_text(text): 通过可见text选择下拉选项
  3. 取消下拉框选项
    deselect_by_index(index)
    deselect_by_value(value)
    deselect_by_visible_text(text)
    deselect_all()
  4. 返回选项
    optioins : 返回所有选项
    first_selected_option: 返回第一个选中项
    all_selected_options : 返回所有选中项
  5. 判断select选项是否可以多选
    is_multiple
1 = Select(driver.find_element_by_id('s1Id'))  # 实例化Select
sleep(2)
s1.select_by_index(1)  # 通过index选择第二个选项:o1
sleep(2)
s1.select_by_value("o2")  # 通过value值选择value="o2"的选项
sleep(2)
s1.select_by_visible_text("o3")  # 通过可见text选择text="o3"的值,即在打开下拉列表时我们可以看到的文本
手动实现全选下拉框
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from time import sleep
import os

driver = webdriver.Chrome()
# driver = webdriver.Firefox()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml6_3.html'
driver.get(html_file)
s1 = Select(driver.find_element_by_id('s1Id'))  # 实例化Select
sleep(2)
all_options = s1.options
for i in range(0,len(all_options)): # 通过len方法获得选项数量,通过range方法将其变为一个整数列表
     s1.select_by_index(i)
sleep(2)
driver.quit()

$ 当我们用select_by_visible_text选择时需要注意以下3点。

  • 当text以空格开头时,定位的传入值可以输入多个空格,也可以不加空格。
  • 当text中间有空格时,只加一个空格。
  • 当text中有nbsp时,根据nbsp的数量加空格。
input下拉列表

使用键盘模拟操作

driver.find_element_by_id('select').send_keys('b')
sleep(3)
driver.find_element_by_id('select').send_keys(Keys.ARROW_DOWN)
sleep(3)
driver.find_element_by_id('select').send_keys(Keys.ENTER)
操作表格
cell_text = driver.find_element(By.ID, "CellWithId").text
print(cell_text)

# 输出表中的所有内容
tbody = driver.find_element(By.XPATH, "/html/body/table/tbody")
# 找出表格下有多少个tr
tr_list = tbody.find_elements(By.TAG_NAME, "tr")
print(len(tr_list), tr_list)
# 输出表格中的内容
for tr in range(0, len(tr_list)):
    td_list = tr_list[tr].find_elements(By.TAG_NAME, "td")

    for td in range(0, len(td_list)):
        print(td_list[td].text)

sleep(3)
driver.quit()
ifram切换

通过id切换driver.switch_to.frame("ifrma1")
通过name(也是唯一)切换driver.switch_to.frame("name1")
通过index切换driver.switch_to.frame(0)
通过定位元素切换driver.switch_to.frame(iframe_element)

切回上一级driver.switch_to.parent_frame()
直接切回主页面driver.switch_to.default_content()

操作弹窗
JavaScript弹窗
弹窗分类
  • Alert弹窗:文字信息 + 确定按钮
  • Confirm弹窗:文字信息 + 确定按钮 + 取消按钮
  • Prompt弹窗:文字信息 + 文本框 + 确定按钮 + 取消按钮
操作

操作Alert弹窗

driver.switch_to.alert.text # 输出Alert弹窗文字
driver.switch_to.alert.accept() # 单击Alert弹窗中的 确定 按钮

操作Confirm弹窗

driver.switch_to.alert.text # 输出Confirm弹窗文字
driver.switch_to.alert.accept() # 单击Confirm弹窗中的 确定 按钮
driver.switch_to.alert.dismiss() # 单击Confirm弹窗中的 取消 按钮

操作Prompt弹窗

driver.switch_to.alert.text # 输出Prompt弹窗文字
driver.switch_to.alert.accept() # 单击Prompt弹窗中的 确定 按钮
driver.switch_to.alert.dismiss() # 单击Prompt弹窗中的 取消 按钮
driver.switch_to.alert.send_keys(xx) # Prompt弹窗中输入文字 
非JavaScript弹窗
  1. Windows浏览器弹窗
    1. 切换句柄操作就可以
  2. div弹窗
    1. 直接根据定位操作就可以
下载文件

默认情况下,浏览器下载的文件会在chrome浏览器设置的路径中,可以进行修改

指定浏览器的下载路径参数
Chrome下载文件

from selenium import webdriver
from time import sleep
import os

chromeOptions = webdriver.ChromeOptions() # 定义变量,存储Chrome浏览器的设置项
prefs = {
   "download.default_directory": "D:\\A\\"}  # 指定默认下载路径
chromeOptions.add_experimental_option("prefs", prefs) # 将prefs定义的下载路径应用于浏览器设置
driver = webdriver.Chrome(chrome_options=chromeOptions) # 以自定义的设置项启动浏览器
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml6_13.html'
driver.get(html_file)
sleep(2)
driver.find_element_by_tag_name('a').click()
sleep(5)
driver.quit()

FireFox下载文件

from selenium import webdriver
from time import sleep

'''
browser.download.dir:指定下载路径
browser.download.folderList:设置成2表示使用自定义下载路径,设置成0表示下载到桌面,设置成1表示下载到默认路径
browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器
browser.helperApps.neverAsk.saveToDisk:对所给出的文件类型不再出现弹窗进行询问
'''
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', 'd:\\')
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('http://sahitest.com/demo/saveAs.htm')
driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click()
sleep(3)
driver.quit()

判断下载的文件和目标文件是否一致 -> 使用md5

这种情况只适用于,文件不变的情况

from selenium import webdriver
from time 
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值