Selenium 体系中用来操作浏览器的 API 就是 WebDriver,WebDriver 针对多种语言都实现了一套 API,支持多种编程语言。
Selenium 通常用来做自动化测试,或者编写网络爬虫。
通常我们说的 Selenium 自动化操作,指的就是 WebDriver 中提供的控制方法。一般我们讲 Selenium 多半都是在谈 WebDriver。
Webdirver 中提供了对浏览器、网页元素、鼠标键盘等操作方法:
-
浏览器操作: 打开和关闭浏览器、改变浏览器分辨率,切换窗口,模拟刷新等
-
页面元素定位: WebDriver 中提供了 Id、Name、Link text、Css、Xpath 等定位方式,用于查找需要操作的网页元素
-
页面元素操作: 找到元素都,就可以对元素进行操作。比如点击
click
、输入send_keys
、清空文本clear
、获取文本text
、获取属性get_attribute
等 -
其他方法: 页面等待、frame 切换、调用JS、模拟鼠标键盘等
启动浏览器
对于 WebDriver 的控制方法,先从对浏览器的基本控制说起。要操作网页元素,首先需要启动浏览器,下面的代码就实现启动浏览器,并打开百度首页:
# 引入webdriver
from selenium import webdriver
# 启动 chrome 浏览器
driver = webdriver.Chrome(executable_path='driver/chromedriver.exe')
# 打开百度首页
driver.get("https://www.baidu.com")
executable_path:
Python + Selenium环境搭建 中提到了浏览器驱动的部署,一般我们都放在环境变量中,方便使用。
如果你不想放环境变量,可以通过此参数指定驱动 (如:chromedriver.exe) 的绝对路径或相对路径。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
浏览器控制
控制浏览器大小
通过 WebDriver 打开浏览器一般默认都是窗口状态(非全屏),这可能会导致某些网页显示不全,无法定位和操作某些页面元素。
可以通过 WebDriver 控制浏览器的大小:
driver.maximize_window() # 浏览器最大化
driver.set_window_size(480, 800) # 设置浏览器480,800为像素大小
driver.minimize_window() # 浏览器最小化
一般,用 maximize_window() 方法最大化即可。
后退、前进
在使用浏览器的过程中,为了方便在浏览过的网页之间切换,WebDriver 也提供了对应的 back() 和 forword() 方法来模拟后退和前进按钮。
driver.back() # 后退到上一个页面
driver.forward() # 前进到下一个页面
如无特殊需要,不建议使用这两个方法。
浏览器刷新
有时候需要手动刷新(F5)页面,例如页面上有些统计字段,当数据发生改变时,并不会及时变化,需要刷新页面后才会变化。此时可以使用模拟浏览器刷新的方法 refresh()。
driver.refresh() # 浏览器刷新,与F5同理
退出
WebDriver 提供了两种退出方式:close() 和 quit(),close() 方法只关闭当前窗口,quit() 则完全退出(删除 session,并关闭浏览器驱动)。
driver.close() # 关闭当前窗口,不会关闭浏览器驱动
driver.quit() # 退出所有窗口并关闭浏览器驱动
关于 close() 与 quit():
close() 仅关闭当前窗口,不会关闭浏览器驱动。
某些浏览器默认情况下,只有一个窗口时,关闭窗口的时候也会自动关闭浏览器。这会造成一个错觉,觉得 close() 也把浏览器关闭了。
对 WebDriver 来说,你并没有关闭浏览器,你只是关闭了一个窗口而已,所以浏览器驱动还处于开启状态,Python 的进程也并未停止。
quit() 会关闭浏览器,删除 session,清理运行过程。
所以,当你想退出时,使用 quit() 而不是 close()。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!