Selenium基础使用
Selenium基础使用
Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、Java、Perl等不同语言的测试脚本。
准备工作
在使用selenium前,需要安装selenium,并下载对应浏览器的驱动程序。
安装selenium
加上国内源镜像,下载速度更快。
pip3 install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/
下载浏览器驱动(Google chrome为例)
首先查看本地chrome浏览器版本,具体步骤如下:
打开谷歌浏览器,点击右上角菜单项→设置→关于chrome
谷歌浏览器驱动程序下载地址:chromedriver下载
下载对应版本的驱动程序(小版本号可能对应不上,就近原则即可)
下载完成后解压保存,准备工作完成。
基础使用
加载驱动程序
from selenium import webdriver
driver_path = r'chromedriver_win32/chromedriver.exe'
wd = webdriver.Chrome(driver_path)
driver_path是解压后的driver文件夹下的chromedriver.exe应用程序的路径,后续对页面的操作通过wd这个对象进行操作。
访问网页
加载应用程序之后,任务栏会打开一个浏览器进程,通过代码来实现浏览器的设置、访问网页、操作页面元素等功能。
常用的浏览器操作方法
方法名 | 作用 |
---|---|
get(base_url) | 访问给定的url,参数类型为字符串 |
wd.refresh() | 刷新页面 |
wd.back() | 回退 |
maximize_window() | 设置窗口最大化 |
wd.minimize_window() | 最小化 |
常用的查找元素方法
selenium查找页面元素,当明确知道页面元素只有一个,使用find_element_by_XXXX,此时返回的是一个Elemen对象,可以直接对其进行操作;当符合查找条件的元素有多个时,使用find_elements_by_XXXX,此时返回的是一个Elemen对象的列表,具体要操作哪个元素可以根据列表下标获取相应的对象。
下面以find_element_by_XXXX为例进行介绍,查找多个元素时只需将element改为elements即可。所需的参数可以在浏览器的开发工具(F12)中快速复制。
方法名 | 参数描述 |
---|---|
find_element_by_id() | id,即id |
find_element_by_xpath() | xpath是元素在html中的路径,例如/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]/input |
find_element_by_link_text() | 通过链接的文本查找 |
find_element_by_partial_link_text() | 通过链接的部分文本查找 |
find_element_by_name() | 通过name属性查找 |
find_element_by_tag_name() | 通过标签名查找 |
find_element_by_class_name() | 通过class属性值查找 |
find_element_by_css_selector() | 通过标签名、属性值联立来定位元素,例如input[id=“kw”] |
常用的元素操作方法
方法名 | 作用 |
---|---|
text | 获取文本值 |
click() | 点击 |
send_keys() | 设置输入框内容 |
clear() | 清除内容 |
get_attribute() | 获取属性值 |
screenshot() | 对元素所在位置截图 |
常用的其他方法
方法名 | 作用 |
---|---|
implicitly_wait() | 等待页面加载完成,传入一个整型参数,表示最多等待多少秒 |
使用感悟
- 页面未加载完成时,定位元素可能会报错,所以需要implicitly_wait(),也可以使用time.sleep()方法,但是可能会影响效率。
- 由于各种原因,可能会出现异常,编写异常处理代码,保障程序不会因为报错终止。
总结
持续添加内容,未完待续。。。。