软件测试 python基础的selenium
原理
selenium是web应用的自动化框架,selenium提供很多程序语言的接口,包括java,python,js,ruby
1,安装selenium
1,本人选用谷歌浏览器(chrome),还可选择火狐,ie等,版本对应的浏览器驱动。得到chromedriver.exe文件
Chrome驱动下载地址
2,将浏览器驱动设置到环境变量
3,python 安装selenium包中,安装客户端库
#在dos命令行或linux终端 pip install selenium
4,在pycharm中调用selenium库进行使用
from selenium import webdriver #创建webdriver对象,用于启动浏览器 wd=webdriver.Chrome(r'c:\chrome.driver.exe')#存储位置 #用get方法打开一个网址 wd.get('https://www.baidu.com')
2,webdriver API学习
2.1定位元素
注:css和xpath在用火狐浏览驱动时,可以有插件firepath和firebug,来自动生成css和xpath对应的语法
1,css定位
wd.find_element_by_css_selector('')
符号 | 例子 | 作用 |
---|---|---|
# | #name | id选择器,选择id="name"的元素 |
“.” | .name | class选择,选择class="name"的元素 |
+ | div+input | 同一级别中紧挨着div的input |
> | div>input | 表示父元素为div的input元素 |
空格 | div input | div的所有div后代元素 |
[attribute=value] | [target=zyc] | 属性定位,选择target为“zyc”的所有元素 |
example:
wd.find_element_by_css_selector(".sceme") wd.find_element_by_css_selector("#name") #组合定位 wd.find_element_by_css_selector("name.firstname>new>input.firs") #要照标签为input对应属性值为firs,父元素为new,父父元素为name,其属性为firstname
|
2,xpath定位
xpath是一种在xml文件中定位元素的语言,又html是xml中的一种实现,故selenium。
1,绝对路径定位
wd.find_element_by_xpath("/html/body/d/input")
2,元素属性定位
#找到元素input且其id为‘kw’ wd.find_element_by_xpath("//input[@id='kw']") wd.find_element_by_xpath("//input[@name='zyc']") #如果不想指定标签名,用 * 号 wd.find_element_by_xpath("//*[@class="zho"]")
3,按次序选择
//p[2] p类型的第二个元素 //div/p[2] 父类元素为div的第二个p类型元素 //div/*[2] 父类元素为div的第二个元素 倒数 //p[last()] 倒数第一个 //p[last()-n] 倒数第n+1个 范围选择,css未有 //option[position() <= 2] 前两个option类的子元素
4,组选择,父节点,兄弟节点
#xpath选择父节点,css做不到 //*[@id='china']/.. id为china元素的父元素 兄弟节点 //*[@class='single_choice']/following-sibling::*
3,id定位
wd.find_element_by_id('')
4,name定位
wd.find_element_by_name('')
5,class定位
wd.find_element_by_class_name('')
6,tag标签定位
wd.find_element_by_tag_name('')
7,link定位
通过元素标签对之间的文本信息来定位元素
wd.find_element_by_link_text('新闻') wd.find_element_by_link_text('地图')
8,partial link定位
是link定位的一部分,取文本链接的一部分
wd.find_element_by_partial_link_text('他是一个')
9,用by定位元素
针对webdriver另外一套方法,调用find_element()
from selenium.webdriver.common.by import By wd.find_element(By.ID,'kw') wd.find_element(By.NAME,'kw') wd.find_element(By.CLASS,'kw') wd.find_element(By.LINK_TEXT,'kw') wd.find_element(By.PARTIAL_LINK_TEXT,'kw') wd.find_element(By.XPATH,'//*[class='class']') wd.find_element(By.CSS_SELECTOR,'span>input')
3,控制浏览器
driver=wd.Chrome() driver.set_window_size(480,600) driver.maximize_window() #最大化 driver.back() #后退 driver.forward() #前进 driver,refresh() #刷新页面
注意
frame 切换/窗口切换
frame切换
iframe元素非常特殊,在html语法中,frame元素或者iframe元素内部往往镶嵌有其他html文档,档我们打开一个网页的时候,内容是包含当前的frame中并不包含被嵌入的html文档里面的内容。
故,切换之。WebDriver的switch_to属性
wd.switch_to.frame('frame_reference')
其中frame_reference是其frame里面的属性name或id;
若是根据frame的元素位置或是属性特性,使用find系列方法,如下:`
wd.switch_to.frame(wd.find_element_by_tag_name('iframe'))
回到以前的frame中
wd.switch_to.default_content() 默认frame框
窗口切换
from selenium import webdriver wd=webdriver.Chrome(r'c:\chrome.exe') wd.implicitly_wait(10) wd.get('http://www.baidu.com') #保留之前窗口 formerWindow=wd.current_window_handle for handle in wd.window_handles: #先切换到对应窗口 wd.switch_to.window(handle) #检测对应窗口是否目的窗口,此处为baidu,达到退出 if 'baidu' in wd.title: break #若是后面要切换回原来的同样的方法1 #法2:将以前的窗口在切换之前保留 #formerWindow=wd.current_window_handle wd.switch_to.window(formerWindow)
wd.implicitly_wait(10)
此语句作用,当检测到find元素语句时,如果没找到语句就不报错,而是每隔半秒上去查看元素,生成webdriver,就立即开始查找。上限设置为10秒。
选择框 radio checkbox select
实战技巧
- 点赞
- 收藏
- 分享
- 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/2.png)
- Python-Selenium2做Web自动化测试(1)-软件测试分类以及什么时候需要进行自动化测试
- 测试基础 软件质量
- Python selenium —— 用chrome的Mobile emulation模拟手机浏览器测试手机网页
- 软件测试基础
- Python+Selenium基础1-2:CentOS环境安装Python&&Selenium
- 软件测试基础知识复习
- 自动化测试基础知识--文章内容源自关春银老师的<selenium 自动化测试基础知识>
- 基于selenium3+python3.6.x+chrome57.x的自动化测试环境搭建
- python自动化测试开发利器ulipad最佳实践(可写python测试代码也可编写selenium、Appium等) 推荐
- Python selenium —— selenium与自动化测试成神之路
- 初学者的Selenium自动化测试指南,基于Python(三)——浏览器相关操作
- Selenium2 Python 自动化测试实战学习笔记(六)
- 软件测试基础
- 软件测试基础知识(一)
- 软件测试基础——软件测试的原则
- python自动化测试开发利器ulipad最佳实践(可写python测试代码也可编写selenium、Appium等)
- 软件测试之App测试点-基础安全测试
- python selenium-webdriver 生成测试报告 (十四)
- 软件测试基础---下