selenium使用技巧
标签(空格分隔): selenium
我们进行selenium的时候,就是通过webdriver,对浏览器做一些操作的:
webdriver,除了find操作,之外还有哪些方法和属性呢?
- 1.获取当前窗口的title:
driver.title
什么是窗口的title呢?
例如打开百度:(关闭按钮,左边的“百度一下,你就知道”)就是title
- 问题:我们获取title有什么作用呢?
答:
1.进行判断,是不是自己要测试的网页;
2.title也是测试的时候要测试的内容之一,也是一个检查点,我们通过driver.title来获取他,就可以进行判断了;
3.title会随着网页的跳转不断的变化的,我们在测试的时候,经常性做检查;
问题:
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('http://www.baidu.com')
print(driver.title)
driver.find_element_by_id('kw').send_keys('淘宝')
print(driver.title)
driver.quit()
执行结果:
百度一下,你就知道
百度一下,你就知道
- 问题:
为什么一次性执行的时候,会两次出现:百度一下,你就知道;结果是一样的?
而单步调试的时候是好的呢?
答案:
因为我们的程序执行比较快,执行完第一步之后,百度的淘宝,百度还没有获取到淘宝网站的元素,所以就显示了百度的原来的;
遇到上述问题怎么解决呢?
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get('http://www.baidu.com')
print(driver.title)
driver.find_element_by_id('kw').send_keys('淘宝')
driver.sleep(2)
print(driver.title)
driver.quit()
这样是不是达到效果了;
- 但是问题来了?为什么有了隐士等待了,还要sleep呢?
敲黑板 :切记,切记!!!!!!
implicity_wait()只针对find的方法有效,对获取界面title是没有效果的;所以这个地方他不会等,他一般是根据每个条件查找元素,切记,implicity_wait()对find方法有效;
- 问题又来了,上述的如果用sleep怎么确定等待多长时间呢?有没有更好的方法?
搜索:淘宝,我们人来说的话,是不是只要有搜索的结果出来了,就表示肯定搜索的结果出来了,所以我们可以吧写死的sleep可以变为这种方式:
我们可以在代码,加入一行代码:
driver.find_element_by_id("")根据上的id 来定位;
从而替换掉写死的sleep()
- 大家要明白这个工作的一个原理就好了;
- driver.current_url获取当前窗口的地址栏:
这个大家指导就好了,用的不是特别的多;
- driver.get_screenshot_as_file('ss1.png')
截图并保存成为文件;
这种在什么情况下的会用到截图呢?
答案:就是在出错,也就是说出现bug的时候,因为自动化测试,人不一直看着的,如果把出错的内容,给保存下来,这样比较好容易定位;
- 一般自动化出问题,人还是要复现并跟进一个下的,如上述的driver.get_screenshot_as_file('ss1.png') 这时候截图保存在哪里呢?
其实我们是可以指定保存截图的路径的;
想要查看我们的截图保存路径,可以查看pycharm的工作目录,就会可保存在文件的工作目录里面;
- 同样我们也可以对元素进行截图:(对单个元素进行截图)
比如说:
ele=driver.find_element_by_id('kw')
实用技巧2:
例如:如下的定位元素:


我们可以通过这个两个来定位:如果上述的方式可以定位,帮我们节省一些时间,通常用于离自己很近的地方有ID的元素,实用这种方法;
实用上述截图来定位元素,有什么缺点呢?
Xpath:只要路径里面有个地方改动了,这样就不好维护;
2.有的时候,通过右键复制的,是不行的,下次进来的时候,他ID是会变的,
常见的:
- 通常不可见元素都是可以操作的
如果确实需要改变窗口的大小
size = driver.get_window_size()
dirver.set_window_size(1100,size['height'])
滚动页面:
driver.execute_script('window.scrollBy(250,0)')
selenium使用技巧的更多相关文章
- Selenium(八):其他操作元素的方法、冻结界面、弹出对话框、开发技巧
1. 其他操作元素的方法 之前我们对web元素做的操作主要是:选择元素,然后点击元素或者输入字符串. 还有没有其他的操作了呢?有. 比如:比如鼠标右键点击.双击.移动鼠标到某个元素.鼠标拖拽等. 这些 ...
- 《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》系列文章之一:SeleniumBasic的下载
Selenium是一种非常流行的浏览器和网页自动化技术,开发人员可以使用C#.Java.Python等语言来操作Chrome.Firefox等浏览器. VBA语言可以直接操作访问Microsoft I ...
- selenium的使用技巧及集成到scrapy
为了爬取拉钩,今天学习了selenum的使用技巧. from scrapy.http import HtmlResponse class JSPageMiddleware(object): ...
- 小技巧之Selenium如何切换到弹出的Tab页中
今天群里讨论了一个问题,如何将selenium的操作焦点切换到浏览器中新弹出来的Tab页中,正好对应到了昨天的那篇文章“小技巧之在浏览器中打开新的页签”.今天就带大家来解决这个问题: 先封装一个Tab ...
- 2020,8种必备Selenium编写自动化用例的技巧
在开始自动化时,您可能会遇到各种可能包含在自动化代码中的方法,技术,框架和工具.有时,与提供更好的灵活性或解决问题的更好方法相比,这种多功能性导致代码更加复杂.在编写自动化代码时,重要的是我们能够清楚 ...
- 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)
1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本.接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用 ...
- 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
随机推荐
- OpenLayers加载谷歌地图服务
谷歌地图的地址如下: 谷歌交通地图地址:http://www.google.cn/maps/vt/pb=!1m4!1m3!1i{z}!2i{x}!3i{y}!2m3!1e0!2sm!3i3800725 ...
- nginx1.14.0版本location路径配置四种方式
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问. 第一种:location /proxy/ { proxy_pass http:// 12 ...
- 2016310Exp5 MSF基础应用
1. 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器的攻击, ...
- Ollydbg中的内存断点和硬件断点的区别
转载自: https://www.zhihu.com/question/52625624 旅人的回复 作者:旅人链接:https://www.zhihu.com/question/52625624/a ...
- C语言数据结构基础学习笔记——B树
2-3树:是一种多路查找树,包含2结点和3结点两种结点,其所有叶子结点都在同一层次. 2结点:包含一个关键字和两个孩子(或没有孩子),其左孩子的值小于该结点,右孩子的值大于该结点. 3结点:包含两个关 ...
- Altium Designer 放置机械孔
先放置一个圆弧,将圆选中:执行Tools -> Convert -> Create Board Cutout from Selected Primitives
- SQL JOIN 中 on 与 where 的区别
left join : 左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right join : 右连接,返回右表中所有的记录以及左表中连接字段相等的记录. inner join : 内连 ...
- vue分页效果
js部分 <script src="....js/vue.js"></script> <script src="..../js/vue-re ...
- php中一个"异类"语法: $a && $b = $c; 【转载】
$a = 1;$b = 2;$c = 3;$a && $b = $c;echo "a:$a";echo "b:$b";echo "c: ...
- Spring3.2.0 之后各个版本完整包下载地址
留作工作学习使用 现在Spring官网已经很难找到完整包的下载地址,都已经迁移到Maven上,这给不能用Maven或者不愿用Maven的各位带来了不小的麻烦. 经过挖掘,找到了下载3.2之后各个版本完 ...


