UI自动化——selenium
安装 打开cmd命令行输入: pip install selenium
下载浏览器的驱动程序(不同浏览器及版本有不同的驱动)Chrome驱动下载
基本操作
from selenium import webdriver
driver= webdriver. Chrome( )
driver. get( "http://www.baidu.com" )
driver. quit( )
方法/属性 说明 maximize_window() 最大化窗口 refresh() 刷新 back() 后退 forward() 前进 close() 关闭页面 current_url 页面url title 页面标题 get_screenshot_as_file(path) 截图保存
元素定位方法
单个元素:find_element
若页面有多个元素匹配,则返回第一个,若无匹配元素,则引发异常:NoSuchElementException 多个元素:find_elements
返回一个列表list,若无匹配元素,list则为空
from selenium. webdriver. common. by import By
driver. find_element_by_id( 'username' )
driver. find_element( 'id' , 'username' )
driver. find_element( By. ID, 'passwd' )
定位方法 说明 id name class name tag name 标签名定位 link text 超链接文本定位 partial link text 超链接部分文本定位 css selector css选择器定位 xpath 路径定位,如 //[@name=‘wd’];//input[@id=‘kw’];// [text()=‘百度’];//[@css=‘test’]/…;// [@css=‘test’]/span[1];//*[contains(@id,‘w’)];//a[contains(text(),‘百度’)]
元素交互
driver. find_element( 'id' , 'passwd' ) . send_keys( "123456" )
driver. find_element( 'id' , 'username' ) . text
driver. find_element( 'id' , 'passwd' ) . get_attribute( 'type' )
方法/属性 说明 send_keys(“text”) 输入文本 clear() 清空文本 click() 单击 text 获取元素中的文本 tag_name 获取元素标签名 get_attribute(‘id’) 获取元素标签属性值 如:id、type、class、value
下拉框元素操作
使用selenium提供的Select类
方法 说明 select_by_visible_text(“text”) 根据“可见文本”选择 select_by_value(“text”) 根据“value属性”选择 select_by_index() 根据索引(从0开始)选择
from selenium import webdriver
from selenium. webdriver. support. select import Select
driver= webdriver. Chrome( )
el= Select( driver. find_element( 'id' , 'edu' ) )
el. select_by_visible_text( '本科' )
el. select_by_index( 0 )
JS弹窗操作
dialog= driver. switch_to. alert
t= dialog. text
dialog. accept( )
dialog. dismiss( )
dialog. send_keys( "可输入的会话框" )
切换框架
driver. switch_to. frame( '框架id/name' )
driver. switch_to. frame( 'index' )
driver. switch_to. default_content( )
driver. switch_to_parent_frame( )
切换窗口
driver. current_window_handle
driver. window_handles
driver. switch_to. window( '窗口句柄' )
三种等待
import time
from selenium. webdriver. support. wait import WebDriverWait
time. sleep( 3 )
driver. implicitly_wait( 5 )
el= WebDriverWait( driver, 10 , 0.5 ) . until(
lambda _ : driver. find_element( 'xpath' , '//*[@id=' passwd']' )
)
执行JS脚本
js= 'window.scrollTo(10,450)'
driver. execute_script( js)
ActionChains类
from selenium. webdriver. common. action_chains import ActionChains
chains= ActionChains( driver)
el= driver. find_element_by_id( 'username' )
chains. double_click( el)
chains. click_and_hold( el)
chains. move_to_element( el)
chains. release( )
chains. perform( )
Key类(特殊按键)
driver. find_element( 'id' , 'username' ) . send_keys( Keys. CONTROL, 'a' )