一、最简单的Web自动化脚本
from selenium import webdriver
driver = webdriver. Chrome( )
driver. maximize_window( )
driver. set_window_size( 720 , 800 )
driver. get( url= 'http://www.baidu.com' )
driver. quit( )
二、元素定位控件
driver. find_element_by_id( )
driver. find_element_by_class_name( )
driver. find_element_by_link_text( )
driver. find_element_by_partial_link_text( )
driver. find_element_by_tag_name( )
driver. find_element_by_xpath( )
driver. find_element_by_css_selector( )
三、元素定位后执行动作
driver. find_element_by_id( "id属性值" ) . click( )
driver. find_element_by_id( "id属性值" ) . send_keys( )
driver. find_element_by_id( "id属性值" ) . clear( )
print ( driver. find_element_by_id( "id属性值" ) . text)
print ( driver. find_element_by_id( "id属性值" ) . size)
print ( driver. title)
print ( driver. current_url)
driver. find_element_by_xpath( "" ) . is_displayed( )
driver. find_element_by_xpath( "" ) . get_attribute( 'value' )
四、弹窗事件
driver. switch_to. alert. send_keys( "我同意" )
print ( driver. switch_to. alert. text)
driver. switch_to. alert. accept( )
driver. switch_to. alert. dismiss( )
五、模拟鼠标事件
from selenium. webdriver. common. action_chains import ActionChains
driver = webdriver. Chrome( )
ele = driver. find_element_by_id( "xxxx" )
time. sleep( 3 )
ActionChains( driver) . move_to_element( ele) . perform( )
driver. find_element_by_xpath( ".xxxx" ) . click( )
ActionChains( ) . context_click( ele) . perform( )
ActionChains( ) . double_click( ) . perform( )
六、模拟键盘操作事件
from selenium. webdriver. common. keys import Keys
driver. find_element_by_id( "kw" ) . send_keys( Keys. BACK_SPACE)
driver. find_element_by_id( "kw" ) . send_keys( Keys. SPACE)
'''更多场景,ctrl+左击 Keys即可查询'''
driver. find_element_by_css_selector( ".bg.s_ipt_wr.quickdelete-wrap input#kw" ) . send_keys( Keys. CONTROL, "a" )
driver. find_element_by_css_selector( ".bg.s_ipt_wr.quickdelete-wrap input#kw" ) . send_keys( Keys. CONTROL, "c" )
driver. find_element_by_css_selector( ".bg.s_ipt_wr.quickdelete-wrap input#kw" ) . send_keys( Keys. CONTROL, "v" )
七、三种等待时间
import time
from selenium. webdriver. support. ui import WebDriverWait
from selenium. webdriver. common. by import By
from selenium. webdriver. support import expected_conditions as EC
time. sleep( 3 )
driver. implicitly_wait( 10 )
ele = WebDriverWait( driver, 10 , 0.5 ) . until( EC. presence_of_element_located( ( By. XPATH, '//xxx' ) ) )
ele. send_keys( "123456" )
ele = WebDriverWait( driver, 10 , 0.5 ) . until_not( EC. presence_of_element_located( ( By. XPATH, '//xxx' ) ) )
ele. send_keys( "123456" )
八、多窗口切换事件
print ( driver. window_handles)
print ( driver. current_window_handle)
driver. switch_to. window( driver. window_handles[ 1 ] )
driver. close( )
九、iframe :控件处理
driver. switch_to. frame( "x-urs" )
fra = driver. find_element_by_xpath( "//div[@id='x-urs']" )
driver. switch_to. frame( fra)
driver. switch_to. parent_frame( )
driver. switch_to. default_content( )
十、Select类处理下拉框代码:
from selenium. webdriver. support. select import Select
s = driver. find_element_by_id( "xxxxx" )
Select( s) . select_by_visible_text( "下拉列表文本值" )
Select( s) . select_by_value( "5" )
Select( s) . select_by_index( 3 )
十一、时间选择框处理代码:
eleIn = driver. find_element_by_id( "HD_CheckIn" )
eleIn. clear( )
eleIn. send_keys( '2020-01-01' )
eleOut = driver. find_element_by_id( "HD_CheckOut" )
eleOut. clear( )
eleOut. send_keys( '2020-01-02' )
【 PS:如果上述操作无法使用sendkeys操纵,可以使用第三方 js 取消弹窗特性】
具体代码操作请参考我的这篇文章:
十二、截取并保存页面的截图
driver. get_screenshot_as_file( "D:/路径.png" )
十三、滚动条事件
js = "var q=document.documentElement.scrollTop=10000"
driver. execute_script( js)
js = "var q=document.documentElement.scrollTop=0"
driver. execute_script( js)
driver. execute_script( "window.scrollTo(0, document.body.scrollHeight*0.5)" ) ;
driver. execute_script( "window.scrollBy(0, 900)" ) ;
time. sleep( 2 )
driver. execute_script( "window.scrollTo(0, 1500)" ) ;