python-selenum3 第六天——WebDriver 常用API(二)

本文详细介绍了使用Selenium进行自动化测试的各种技巧,包括循环遍历下拉列表、单选和多选下拉列表、操作单选框和多选框、断言页面源码关键字、截屏以及拖拽页面元素等。通过具体的代码示例,读者可以深入理解如何在实际项目中应用这些技术。

1.循环遍历所有的下拉列表值
2.单选下拉列表
3.多选择列表的选中与取消
4.操作单选框、多选框以及断言及全部选中
5.断言页面源码中的关键字
6.截屏
7.拖拽页面元素


1. 循环遍历所有的下拉列表值

   <!--练习的html-->
     学历:<select id="zz" name="ss" size="1">
                   <option value ="you">幼儿园</option>
                   <option value ="xiao">小学</option>
                   <option value ="chu">初中</option>
                   <option value ="gao">高中</option>
                   <option value ="da">大学</option>
              </select>
from selenium import webdriver
#导入select模块
from selenium.webdriver.support.select import Select
driver  = webdriver.Firefox(executable_path="d:\\geckodriver")
url = "file:///d:/day8.html"
driver.get(url)
#定位下拉菜单
select_element = driver.find_element_by_id("zz")
#将所有的内容保存并赋值给options   注意这里是所有元素 所以用elements
options = select_element.find_elements_by_tag_name("option")
#循环显示加打印
for option in options:
    print("选项显示的文本:",option.text)
    print("选项值为:",option.get_attribute("value"))
    option.click()
    import time
    time.sleep(1)

2.单选下拉列表

from selenium import webdriver
from selenium.webdriver.support.select import Select
driver  = webdriver.Firefox(executable_path="E:\\geckodriver.exe")
driver.get("file:///d:/day8.html")
#定位下拉菜单
xiala = driver.find_element_by_id("zz")
#通过序号选择,序号从0开始,2为初中
Select(xiala).select_by_index(2)
#通过value属性值选择,选择高中
Select(xiala).select_by_value("gao")
#通过文本值选择,直接选择大学
Select(xiala).select_by_visible_text(u"大学")

3.多选择列表的选中与取消

   <!--练习的html-->
             学历:<select id="zz" name="ss" size="6" multiple="true">
                   <option value ="you">幼儿园</option>
                   <option value ="xiao">小学</option>
                   <option value ="chu">初中</option>
                   <option value ="gao">高中</option>
                   <option value ="da">大学</option>
              </select>
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver  = webdriver.Firefox(executable_path="E:\\geckodriver.exe")
driver.get("file:///d:/day8.html")
#定位下拉菜单
xiala = driver.find_element_by_id("zz")
#多选后为选择初中、高中、大学
Select(xiala).select_by_index(2)
Select(xiala).select_by_value("gao")
Select(xiala).select_by_visible_text(u"大学")
#取消已经选择的内容(下面简写了,比选择多加了个de而已,最后一个是取消所有已经选中)
Select(xiala).deselect_by_index(2)
Select(xiala).deselect_by_value("gao")
Select(xiala).deselect_by_visible_text(u"大学")
Select(xiala).deselect_all()

4.操作单选框、多选框以及断言及全部选中

   <!--练习的html-->

      <!--单选--> <p>
             性别:男<input type="radio" name="r1" checked/>
                   女<input type="radio" name="r1" />
                   不明<input type="radio" name="r1" />
           </p>
    <!--多选-->  <p>
             爱好:游戏<input type="checkbox" name="c1" checked/>
                   文艺<input type="checkbox" name="c2" />
                   睡觉<input type="checkbox" name="c3" />
           </p>
from selenium import webdriver
driver  = webdriver.Firefox(executable_path="E:\\geckodriver.exe")
driver.get("file:///d:/day8.html")
#最简单的单选和多选,直接点击选择框即可 下面为单选女的选择点击
xuanzhong = driver.find_element_by_xpath("/html/body/form/p[2]/input[2]")
xuanzhong.click()
#断言是否被选中(选择需要配合框架使用)
assertTrue(xuanzhong.is_selected(),u"女没有被选中")
#一次性将所有的多选选项全部选择(一定要注意因为一次性多选所以是elements)
#注意:因为游戏是默认,所以在次点击等于取消了选择,下面结果为选中文艺和睡觉
duoxuan = driver.find_elements_by_xpath(".//*[@type='checkbox']")
for i in duoxuan:
    i.click()

5.断言页面源码中的关键字

from selenium import webdriver
driver  = webdriver.Firefox(executable_path="E:\\geckodriver.exe")
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("WIKTK")
driver.find_element_by_id("su").click()
import time
time.sleep(4)
#断言页面源码中的关键字
assert "WIKTK" in driver.page_source, u"页面中源码中不存在该关键字"

6.截屏

from selenium import webdriver
driver  = webdriver.Firefox(executable_path="E:\\geckodriver.exe")
driver.get("https://www.baidu.com")
driver.save_screenshot(r"d:\截图.png")

7.拖拽页面元素

http://jqueryui.com/resources/demos/draggable/scroll.html
from selenium import webdriver
driver = webdriver.Firefox(executable_path="E:\\geckodriver.exe")
driver.get("http://jqueryui.com/resources/demos/draggable/scroll.html")
#定位第一、第二、第三拖动框体
yi = driver.find_element_by_id("draggable")
er = driver.find_element_by_id("draggable2")
san = driver.find_element_by_id("draggable3")

#导入拖拽元素方法模块
from selenium.webdriver import ActionChains

a_chains = ActionChains(driver)
#第一个框拖动到第二个框
a_chains.drag_and_drop(yi, er).perform()
#将第三个框平移500
a_chains.drag_and_drop_by_offset(san,500, 0).perform()

转载于:https://blog.51cto.com/wiktk/2386201

### Selenium 测试工程师概述 Selenium 是一种广泛使用的开源自动化测试框架,主要用于 Web 应用程序的功能测试。以下是关于 Selenium 测试工程师的职位描述、技能要求以及学习路径的信息。 --- #### 职位描述 Selenium 测试工程师的主要职责是对 Web 应用程序进行自动化的功能测试,确保产品的质量和稳定性。具体工作内容可能包括但不限于: - 设计并实现基于 Selenium 的自动化测试脚本,用于验证应用程序的功能和性能。 - 使用编程语言(如 Python 或 Java)编写可维护的测试代码[^2]。 - 配合开发团队完成持续集成/持续部署 (CI/CD) 过程中的自动化测试部分。 - 对现有测试流程进行优化,提升测试效率和覆盖率。 - 参与缺陷分析过程,协助定位问题根源并推动修复。 --- #### 技能要求 要成为一位合格的 Selenium 测试工程师,通常需要以下几方面的技能: 1. **熟悉 Selenium 工具集** - 掌握 Selenium WebDriver 和 Selenium Grid 的基本概念及其应用方式。 - 熟悉页面对象模型 (Page Object Model, POM),以便更好地组织测试代码结构[^3]。 2. **精通至少一门编程语言** - 常见的选择有 Python 和 Java,因为它们拥有丰富的库支持和社区资源。 ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.example.com") element = driver.find_element_by_id("example-id") assert element.text == "Expected Text" driver.quit() ``` 3. **理解 HTML/CSS/DOM 结构** - 由于 Selenium 主要是通过操作网页元素来模拟用户行为,因此对前端技术的理解至关重要。 4. **数据库基础知识** - 如果被测系统涉及数据存储,则需懂得 SQL 查询语句以验证后台逻辑是否正确运行。 5. **版本控制工具** - Git 是最常用的版本控制系统之一,能够帮助管理源码变更历史记录。 6. **持续集成平台经验** - Jenkins、Travis CI 或 CircleCI 等工具可以用来构建流水线作业计划表,从而实现无人值守式的回归测试执行。 7. **软技能方面** - 具备较强的沟通能力和团队协作精神,在跨职能小组之间传递信息时显得尤为重要。 8. **其他附加价值项** - RESTful API 测试能力:Postman 或 Requests 库可以帮助检查接口响应情况; - 性能评估技巧:借助 JMeter 或 Locust 来测量服务器负载表现; - 移动端 Appium 自动化实践经历等额外加分项目。 --- #### 学习路径建议 针对初学者到中级水平的学习者,这里提供一条清晰的成长路线图供参考: ##### 第一阶段:入门级准备 - 安装配置好本地环境(操作系统+浏览器驱动器),尝试简单的交互命令练习。 - 学习基础语法知识——如果尚未掌握任何主流编程语言的话先补上这一课! ##### 第阶段:核心知识点深入挖掘 - 研究官方文档 https://www.selenium.dev/documentation/en/ - 实践案例研究,模仿真实场景下的复杂业务流重现。 ##### 第三阶段:进阶主题探索 - 多浏览器兼容性处理方案探讨。 - 并行任务调度机制原理剖析。 - 数据驱动型测试方法论介绍。 ##### 第四阶段:综合实战演练 - 构建完整的 E2E (End-to-End)测试套件覆盖整个产品生命周期内的各个关键环节。 - 尝试将所学应用于实际工程项目当中去检验效果如何。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值