selenium
selenium
- selenium文档 —— https://selenium-python.readthedocs.io/api.html;https://selenium-python-zh.readthedocs.io/en/latest/locating-elements.html
selenium介绍
- selenium是一个web自动化测试工具,它可以直接运行在浏览器上,支持所有主流的浏览器,让浏览器自动加载页面并获取数据,甚至截屏。
- selenium需要配合浏览器使用,因此需要安装相应的插件(chrome举例,需要安装chromedriver)
selenium使用方法
Phantomjs使用
- 无头浏览器 —— 一个完整的浏览器内核,包括js解析引擎,渲染引擎,请求处理等,但不包括显示和用户交互页面的浏览器
- 调用方法:
from selenium import webdriver
变量 = webdriver.PhantomJS() —— 所有phantomjs内容里的变量均指此变量
get方法 —— 打开网址
- 变量.get(‘url’) —— 打开网页
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('https://www.baidu.com') # 打开百度
定位位置并输入内容
- 定位位置变量 = 变量.find_element_by_id(‘id值’) —— 定位具体位置
- 定位位置变量.send_keys(‘内容’) —— 输入具体内容
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('https://www.baidu.com')
location_tag = driver.find_element_by_id('kw')
location_tag.send_keys('python')
点击事件并查看当前请求的url地址
- 定位位置变量 = 变量.find_elemnet_by_id(‘id值’) —— 定位要点击按钮的位置
- 定位位置变量.click() —— 点击动作
- 变量.current_url
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('https://www.baidu.com')
location_tag = driver.find_element_by_id('kw')
location_tag.send_keys('python')
button_tag = driver.find_element_by_id('su')
button_tag.click()
print(driver.current_url) # https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=python&fenlei=256&rsv_pq=8ebf920e0003c573&rsv_t=3485hqqkxUucvK17daXRJ9p%2FmTl1EFU8rqol7qSRWefAdOTHqARqJI9xdRs&rqlang=cn&rsv_enter=0&rsv_dl=ib&rsv_sug3=6&rsv_btype=i&inputT=55&rsv_sug4=55
截屏
- driver.save_screenshot(‘保存内容的文件名及后缀’)
chromedriver使用(edge使用)
- 调用方法:
from selenium import webdriver
变量 = webdirver.Chrome() (变量 = webdriver.Edge()) —— 所有操作均需使用此变量,以下内容的变量均为此处获得
打开浏览器、打开网页、关闭网页、退出程序
from selenium import webdriver
import time
drive = webdriver.Edge()
drive.get('https://www.baidu.com') # 打开浏览器并打开www.baidu.com网页
time.sleep(3)
drive.close() # 关闭网页,如果网页只有一个则关闭浏览器
time.sleep(1)
drive.quit() # 关闭浏览器并退出驱动程序
定位元素
- 调用方法:
-
第一种方法(通过id定位举例)
form selenium import webdriver
变量 = webdriver.Edge()
变量.get(‘url’)
变量.find_element_by_id(‘id值’) -
第二种方法(通过id定位举例)
form selenium import webdriver
form selenium.webdriver.common.by import By
变量 = webdriver.Edge()
变量.find_element(By.ID, ‘id值’)
-
方法 | 含义 |
---|---|
find_element_by_id(‘id值’) | 根据id属性值来查找某个元素 |
find_element_by_class_name(‘class值’) | 根据class属性值来查找某个元素 |
find_element_by_name(‘name值’) | 根据name属性值来查找某个元素 |
find_element_by_tag_name(‘标签名’) | 根据标签名来查找元素 |
find_element_by_xpath(‘xpath路径’) | 根据xpath语法来获取元素 |
find_element_by_css_select(‘css选择器语法’) | 根据css选择器语法来获取元素 |
注意:1、find_element是获取第一个满足条件的元素,find_elements是获取所有满足条件的元素。2、如果定位的元素属性值出现空格,可以通过xpath进行定位,或更改其他属性进行定位,或选取元素中的一部分(空格前内容和空格后内容)
操作表单元素
清除输入框内容
变量.clear()
操作按钮
变量.click()
操作下拉菜单
切换iframe
- 介绍 —— 下拉菜单
- 方法(两种方法):
-
第一种(通过iframe内的id属性举例):
变量.switch_to_frame(变量.find_element_by_id(‘id值’) -
第二种(通过iframe内的id属性举例)
变量.swith_to.frame(变量.find_element_by_id(‘id值’)
-
select标签元素
- 介绍 —— select元素不能被直接点击,因为点击后还需要选中元素(常用语下拉菜单)。这时selenium专门为select标签元素提供了一个类(from selenium.webdriver.support.ui import Select),将获取到的元素当成参数传到类中,创建这个对象,以后就可以使用这个对象进行选择了。
选择相应的值
- 方法(两种方法):
-
第一种:通过select标签元素内的class属性(举例)选择值
from selenium.webdriver.support.ui import Select
Select实例对象 = Select(变量.find_element_by_class_name(‘class值’)
Select实例对象.select_by_value(‘需要选定的值’) -
第二种:通过select标签元素内的下标索引选择值
from selenium.webdriver.support.ui import Select
Select实例对象 = Select(变量.find_element_by_class_name(‘class值’)
Select实例对象.select_by_index(‘索引值(从0开始)’)
-
操作非select标签
- 操作步骤
-
定位需要操作下拉菜单的标签(通过id标签举例)
下拉菜单标签变量 = 变量.find_element_by_id(‘id值’) -
点击标签
下拉菜单标签变量.click() -
确定选择值(通过xpath路径举例)
选择值变量 = 变量.find_element_by_xpath(‘xpath路径’) -
点击标签
选择变量值.click()
-