陈塘庄网站建设,企业网站推广设计,千峰培训出来好就业吗,网站的弹窗是用什么软件做的一、selenium简介 Selenium是一个自动化测试工具#xff0c;用于模拟用户在Web上的行为。它支持多种浏览器#xff0c;如Chrome、Firefox、IE等。Selenium可以实现多种操作#xff0c;包括打开浏览器、导航到指定URL、填写表单、点击按钮、获取页面元素等。 Seleniu… 一、selenium简介 Selenium是一个自动化测试工具用于模拟用户在Web上的行为。它支持多种浏览器如Chrome、Firefox、IE等。Selenium可以实现多种操作包括打开浏览器、导航到指定URL、填写表单、点击按钮、获取页面元素等。 Selenium有多种语言实现包括Java、Python、C#等可以根据自己的喜好和需求选择合适的语言来编写测试脚本。 Selenium还提供了丰富的API和工具如Selenium WebDriver、Selenium Grid等可以用于构建可靠的、可扩展的自动化测试框架。 Selenium的特点包括 支持多种浏览器可以在不同的浏览器上运行测试确保在不同环境下的兼容性灵活性可以模拟用户的各种操作如点击、输入、滚动等可扩展性可以根据需求自定义各种操作和断言满足不同的测试需求多种语言支持支持Java、Python、C#等多种编程语言方便开发者使用强大的定位机制可以通过多种方式定位页面元素如ID、name、class等。 二、python搭建selenium的环境 pip基本命令 pip list # 查看当前所有的第三方库
pip install 第三方包名 # 在线下载、安装指定的第3方包
pip uninstall 第三防包名 # 卸载指定的第三方包 selenium安装 pip install selenium 如果觉得官方下载源较慢可以使用国内的镜像地址清华源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium 下载对应浏览器的驱动程序文件 1.Chrome驱动地址http://npm.taobao.org/mirrors/chromedriver
2.Firefox驱动地址https://github.com/mozilla/geckodriver/releases/
3.IE驱动地址http://selenium-release.storage.googleapis.com/index.html 将下载的驱动包解压出来的exe文件放置在环境变量path能找到的路径下 三、WebDriverWeb驱动类详细用法 1. WebDriver类的对象是真正操作浏览器的对象不同的浏览器会有不同的驱动类对象别名。 2. 启动浏览器 —— 创建对应浏览器的驱动类对象必须要设置好浏览器驱动程序文件 示例代码 from selenium import webdriver
dr webdrvier.Chrome() # 启动Chrome浏览器 3. 驱动对象常用方法 驱动对象.get(url) —— 打开指定URL的页面
驱动对象.close() —— 关闭当前页面如果关闭是浏览器中最后一个页面整个浏览器也会退出
驱动对象.quit() —— 退出浏览器终止驱动程序 定位页面元素的方法 理解8种定位页面元素策略、2套方式返回单个页面元素、返回多个页面元素 方式一定位单个页面元素返回的是WebElement。格式find_element 常用方法 驱动对象.find_element_by_id(id属性) —— 根据页面元素的id属性
驱动对象.find_element_by_name(name属性) —— 根据页面元素的name属性驱动对象.find_element_by_class_name(class样式名) —— 根据页面元素的”类样式名“
如果标签的class属性值中有空格代表具有多个类样式名我们只能用其中的一个样式名
驱动对象.find_element_by_tag_name(标签名) —— 根据标签名来定位元素驱动对象.find_element_by_link_text(超链接文本) —— 根据超链接标签的内部文本只对超链接标签a标签有用
驱动对象.find_element_by_partial_link_text(部分超链接文本)只对超链接标签a标签有用
驱动对象.find_element_by_css_selector(CSS选择器) —— 根据CSS选择器来定位元素
驱动对象.find_element_by_xpath(xpath) —— 根据XPATH表达式定位元素 注意点 定位单个元素的方法返回值是找到的“页面元素”对象WebElement
页面元素.send_keys(内容) —— 向页面元素中输入内容
页面元素.clear() —— 清空输入框中的文本
页面元素.click() —— 单击页面元素
页面元素.get_attribute(属性名) —— 获取页面元素的标签属性
页面元素.text —— 获取页面元素的内部文本开始标签和结束标签之间的
内容
单个标签的页面元素内部文本永远为空字符串。
如果页面上有多个匹配的元素只返回其中一个元素。
尽量根据元素的唯一特定来定位
如果页面上没有匹配的元素会报错NoSuchElementException
没有找到这个元素 方式二定位多个页面元素返回的是list。格式find_elements 常用方法 驱动对象.find_elements_by_id(id属性) —— 根据页面元素的id属性
驱动对象.find_elements_by_name(name属性) —— 根据页面元素的name属
性
驱动对象.find_elements_by_class_name(class样式名) —— 根据页面元素
的”类样式名“
如果标签的class属性值中有空格代表具有多个类样式名我们只能用其中
的一个样式名
驱动对象.find_elements_by_tag_name(标签名) —— 根据标签名来定位元素驱动对象.find_elements_by_link_text(超链接文本) —— 根据超链接标签的内部文本
只对超链接标签a标签有用
驱动对象.find_elements_by_partial_link_text(部分超链接文本)
只对超链接标签a标签有用
驱动对象.find_elements_by_css_selector(CSS选择器) —— 根据CSS选择
器来定位元素
驱动对象.find_elements_by_xpath(xpath) —— 根据XPATH表达式定位元素 注意点 定位多个元素的方法返回值是找到的“页面元素”的列表是list。
列表中的元素是页面上的标签元素WebElement
如果页面上没有匹配的元素不报错只不过返回的列表长度为0 4. 驱动对象的常用属性 驱动对象.title —— 获取当前页面窗口的标题
驱动对象.current_url —— 获取当前页面的URL 四、CSS选择器 标签名选择器 —— 语法 标签名 h3 —— 匹配页面上所有的h3元素
a —— 匹配页面上的所有a标签 类样式选择器 —— 语法 .类样式名 .abc —— 匹配页面上的classabc的标签
.my-god —— 匹配页面上的classmy-god的标签 ID选择器 —— 语法 #ID属性值 ID属性值是自定义的它匹配页面上那些出现id指定id属性值的标签
#hot —— 匹配页面上的idhot的标签
#ok —— 匹配页面上的idok的标签 属性选择器 —— 语法 [属性名值] 匹配页面上出现了指定属性且等于指定值的标签
[idbutton] —— 找到id属性等于button的元素
[colorred] —— 找到color属性等于red的元素
[value登 录] —— 找到value属性等于“登 录”的元素引号当前必须打因为属性值中
有空格 上述的四种基础选择器的组合表述标签在网页的层次结构 选择器1 选择器2 —— 找到所有匹配“选择器1”里面的匹配“选择器2”的元素 —— 里面就行
p a —— 找到a标签a标签的外面必须有p标签
.hot p .rf —— 找到所有的class为rf的标签但是这些标签必须在p标签的里面且p标签必须在有class为hot的元素内部。 选择器1 选择器2 —— 找到所有匹配“选择器1”的下一级匹配“选择器2”的元素 —— 必须是下
一级
p a —— 找到a标签a标签的父标签必须是p标签 五、XPATH xpath表达式可以用于在xml、html文件中以”路径“的写法来定位文件中的“节点” 节点 —— 描述一个元素在html文件中的路径 注意XPATH表达式必须是以节点为基础的 路径符号xpath表达式是从文档的根开始计算的 / —— 进入下一级节点// —— 任意一级节点 /html/body/p/span/a —— 从根标签开始一级一级的向下找到符合路径的a标签
//p//a —— 找到所有在p标签里的a标签
//p/a —— 找到所有在p标签下一级的a标签 xpath里面的限定 节点[限定条件] 语法总结 节点[N] —— 找父节点中第N个满足条件的子节点节点[last()] —— 找父节点中最后1个满足条件的子节点节点[属性名值] —— 匹配具有指定属性值的节点属性名前面要打符号值两边必须有引号节点[text()值] —— 匹配内部文本等于指定值的节点节点[contains(text(), 值)] —— 匹配内部文本中含有指定值的元素节点[contains(属性名, 值)] —— 匹配指定属性含有指定值的元素节点[starts-with(属性名, 值)] —— 匹配指定属性以指定值开头的元素节点[条件1 and 条件2] —— 匹配同时满足条件1和条件2的节点节点[条件1 or条件2] —— 匹配同时满足条件1或者条件2的节点节点[not(条件)] —— 匹配不满足指定条件的节点 示例代码 //p[1] —— 找到是其父标签中的第1个子段落标签
//div/p[last()] —— 找到是其父标签中的最后一个子段落标签
//div[classpoem]/p[last()] —— 找到父标签是div且有class属性等于poem的下面
的p标签中的最后一个
//*[nameemail] —— 找到任意一级的任意元素但它的name属性必须等于email
//a[text()注册] —— 找到内部文本等于“注册”的a标签元素
//span[text()注意] —— 找到内部文本等于“注意”的span标签元素
//*[contains(text(), 注)] —— 找到任意的标签中内部文本包含“注”的所有元素
//li[contains(id, stu)] —— 找到id属性中包含了stu的li元素
//li[starts-with(id, stu)] —— 找到id属性以包stu打头的li元素
找到所有id属性以“yw”或者id属性以“sx”打头的li元素
//li[starts-with(id, yw) or starts-with(id, sx)]
找到所有id属性不以“stu”打头但含有“stu”的li元素
//li[not(starts-with(id, stu)) and contains(id, stu)] 六、使用selenium unittest编写自动化测试的用例代码 用unittest来组织一个测试点的相关测试用例会把一个测试点的系统测试用例中重要的用例选择出来转换写成自动化测试用例代码一条测试用例对应一个测试方法真正操作浏览器、定位元素、操作元素的代码是写在每个测试方法中在测试方法中写断言如果多个测试方法有一些共同要先执行、最后执行的代码可以定义“固件方法”来实现 如果在setUp方法中创建了浏览器驱动记得用 self.驱动对象
在测试方法中均用 self.驱动对象. 示例套件 import unittest
from selenium import webdriverclass 测试类名(unittest.TestCase):def setUp(self):# 启动浏览器、打开XXX页面self.driver webdriver.Chrome()self.driver.get(XXX)def tearDown(self):self.driver.quit()def test_测试方法1(self):# 这里面写操作浏览器的代码# self.driver# 进行断言def test_测试方法2(self):# 这里面写操作浏览器的代码# self.driver# 进行断言if __name__ __main__:
unittest.main() 七、使用Select类来操作页面上的下拉框 构建一个代表页面上某个下拉框的Select类的对象 示例代码 from selenium.webdriver.support.select import Select
下拉框 Select(驱动对象.find_element_by_xxx(下拉框元素的定位特征)) 三个选中选项的方法 示例代码 下拉框.select_by_visible_text(本科) # 根据选项标签的内部文本选中选项
下拉框.select_by_value(cz) # 根据选项标签的value属性选中选项
下拉框.select_by_index(6) # 根据选项标签的索引从0开始选中选项 一个代表所有选项元素列表的属性 —— options 示例代码 for elem in 下拉框.options:
# elem就是页面上下拉框中每个选项的页面元素elem.click() 八、使用By类的类属性来代表元素定位的策略 selenium将定位元素的八种策略定义在了By类中用8个类属性来代表 By类需要导入 from selenium.webdriver.common.by import By 使用方式无论定位单个元素还是多个元素喜欢用“短款”的定位方法 驱动对象.find_element(By.XXX, 值)驱动对象.find_elements(By.XXX, 值)