selenium的使用
from selenium import webdriver
from time import sleep
import os
一、webdriver 元素定位
get()直接访问某个网址(传参输入网址)
back() 返回上一个页面
forward()进入下一个页面
close()关闭当前标签页
quit()关闭浏览器
url = os. getcwd( ) + os. sep + '注册A.html'
driver = webdriver. Chrome( )
driver. get( url)
userA = driver. find_element_by_id( "userA" )
userA. send_keys( "123" )
driver. find_element_by_name( "passwordA" ) . send_keys( "123456" )
driver. find_element_by_class_name( "telA" )
driver. find_element_by_tag_name( "input" ) . send_keys( "123456" )
driver. find_element_by_link_text( "访问 新浪 网站" ) . click( )
driver. back( )
driver. find_element_by_partial_link_text( "网站" ) . click( )
"""
以上每一个方法都可以在element元素后面加上s,返回一个数组,可以用数组下标进行选择元素
tem = driver.find_elements_by_tag_name("input")
for i in range(16):
print(tem[i].get_attribute("id"))
"""
driver. back( )
二、Xpath、CSS定位
find_element_by_xpath
绝对路径:/html/body/div/p[2]
相对路径://input[@id='userA']
driver. find_element_by_xpath( "/html/body/form/div/fieldset/p[3]/input" ) . send_keys( "123" )
driver. find_element_by_xpath( "//div[@id='zc']/fieldset/p[3]/input" ) . send_keys( "123" )
driver. find_element_by_css_selector( 'input' )
driver. find_element_by_css_selector( '#userA' )
driver. find_element_by_css_selector( '.telA' )
driver. find_element_by_css_selector( "input[type^='p']" )
补充知识,通过By查找元素
导包:from selenium.webdriver.common.by import By
from selenium. webdriver. common. by import By
driver. find_element( By. CSS_SELECTOR, "#userA" ) . send_keys( "liuyaohui" )
driver. find_element( By. ID, "passwordA" ) . send_keys( '123' )
driver. find_element( By. NAME, 'telA' ) . send_keys( '15537003170' )
driver. find_element( By. XPATH, "//*[@id='emailA']" ) . send_keys( '1783933592@qq.com' )
三、元素操作方法
1. clear() 清除文本
2. send_keys() 模拟输入
3. click() 单击元素
4. maximize_window() 最大化 --> 模拟浏览器最大化按钮
5. set_window_position(0, 0) -->设置窗口位置
6. driver.set_window_size(300, 400)
7. refresh() 刷新 --> 模拟浏览器F5刷新
8. close() 关闭 --> 模拟浏览器关闭按钮(关闭单个窗口)
9. back() 返回上一个页面
10. forward()进入下一个页面
11. quit() 关闭 --> 关闭所有WebDriver启动的窗口
1. size 返回元素大小
2. text 获取元素的文本
3. title 获取页面title
4. current_url 获取当前页面URL
5. get_attribute("xxx") 获取属性值;xxx:要获取的属性
四、WebDriver鼠标、键盘操作
鼠标导包:from selenium.webdriver.common.action_chains import ActionChains
1. context_click() 右击 --> 此方法模拟鼠标右键点击效果
2. double_click() 双击 --> 此方法模拟鼠标双击效果
3. drag_and_drop() 拖动 --> 此方法模拟鼠标拖动效果
4. move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
5. perform() 执行 --> 此方法用来执行以上所有鼠标方法
from selenium. webdriver. common. action_chains import ActionChains
action = ActionChains( driver)
userA = driver. find_element_by_id( "userA" )
action. double_click( userA) . perform( ) // 双击并执行
键盘导包:from selenium.webdriver.common
1. send_keys(Keys.BACK_SPACE)删除键(BackSpace)
2. send_keys(Keys.SPACE)空格键(Space)
3. send_keys(Keys.TAB)制表键(Tab)
4. send_keys(Keys.ESCAPE)回退键(Esc)
5. send_keys(Keys.ENTER)回车键(Enter)
6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
7. send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
from selenium. webdriver. common. keys import Keys
userA. click( )
userA. send_keys( Keys. CONTROL, 'a' )
五、设置元素等待
方法:implicitly_wait(timeout) (timeout:为等待最大时长,单位:秒)
调用:driver.implicitly_wait(10) (driver:为浏览器实例化对象名称)
driver. implicitly_wait( 10 )
六、下拉选择框、警告框、滚动条操作
选择框(select)
1.实现方式:
1.定位option选项 (找到该元素,然后直接选择)
2.通过Select类实现(导包:from selenium.webdriver.support.select import Select)
driver. find_element_by_css_selector( "[value='sh']" ) . click( ) // 上海
sleep( 2 )
driver. find_element_by_css_selector( "[value='gz']" ) . click( ) // 广州
sleep( 2 )
driver. find_element_by_css_selector( "[value='bj']" ) . click( ) // 北京
sleep( 2 )
from selenium. webdriver. support. select import Select
select = Select( driver. find_element_by_css_selector( "#selectA" ) )
select. select_by_index( 1 )
select. select_by_index( 3 )
select. select_by_index( 2 )
select. select_by_visible_text( "A上海" )
select. select_by_visible_text( "A重庆" )
select. select_by_visible_text( "A广州" )
select. select_by_value( "sh" )
select. select_by_value( "cq" )
select. select_by_value( "gz" )
警告框(alert、confirm、prompt)
1. text --> 返回alert/confirm/prompt中的文字信息
2. accept() --> 接受对话框选项
3. dismiss() --> 取消对话框选项
driver. find_element_by_css_selector( "#alerta" ) . click( )
alert = driver. switch_to. alert
print ( alert. text)
alert. accept( )
滚动条(使用js代码实现)
js="window.scrollTo(0,1000)"
driver.execute_script(js)
js = "window.scrollTo(0,1000)"
driver. execute_script( js)
sleep( 2 )
driver. quit( )
七、frame表单切换、多窗口切换
1).driver.switch_to.frame("myframe1") --> 切换表单方法
(myframe1:为frame表单的name或id)
2). driver.switch_to.default_content() --> 恢复默认页面方法
(在frame表单中操作其他页面,必须先回到默认页面,才能进一步操作)
url = os. getcwd( ) + os. sep + '注册实例.html'
driver = webdriver. Chrome( )
driver. get( url)
current_handle = driver. current_window_handle
driver. find_element_by_css_selector( "#ZCA" ) . click( )
for handle in driver. window_handles:
if handle != current_handle:
driver. switch_to. window( handle)
driver. find_element_by_id( 'userA' ) . send_keys( '123456' )
driver. find_element_by_id( 'passwordA' ) . send_keys( '123456' )
driver. switch_to. window( current_handle)
driver. find_element_by_css_selector( "#user" ) . send_keys( "123456" )
八、窗口截图、验证码处理(验证码处理了解即可->cookie)
窗口截图:
get_screenshot_as_file(imgpath) --> 截取当前窗口
driver. get_screenshot_as_file( 'file.png' )
sleep( 1 )
driver. quit( )
↓
↓
全代码 :
from selenium import webdriver
from time import sleep
import os
"""
selenium的使用
-------------------------------------------------------------------------------
一、webdriver 元素定位
get()直接访问某个网址(传参输入网址)
back() 返回上一个页面
forward()进入下一个页面
close()关闭当前标签页
quit()关闭浏览器
"""
url = os. getcwd( ) + os. sep + '注册A.html'
url1 = 'ftp://192.168.0.6'
driver = webdriver. Chrome( )
driver. get( url)
userA = driver. find_element_by_id( "userA" )
userA. send_keys( "123" )
driver. find_element_by_name( "passwordA" ) . send_keys( "123456" )
driver. find_element_by_class_name( "telA" )
driver. find_element_by_tag_name( "input" ) . send_keys( "123456" )
driver. find_element_by_link_text( "访问 新浪 网站" ) . click( )
driver. back( )
driver. find_element_by_partial_link_text( "网站" ) . click( )
"""
以上每一个方法都可以在element元素后面加上s,返回一个数组,可以用数组下标进行选择元素
tem = driver.find_elements_by_tag_name("input")
for i in range(16):
print(tem[i].get_attribute("id"))
"""
driver. back( )
"""
-------------------------------------------------------------------------------
二、Xpath、CSS定位
find_element_by_xpath
绝对路径:/html/body/div/p[2]
相对路径://input[@id='userA']
"""
driver. find_element_by_xpath( "/html/body/form/div/fieldset/p[3]/input" ) . send_keys( "123" )
driver. find_element_by_xpath( "//div[@id='zc']/fieldset/p[3]/input" ) . send_keys( "123" )
driver. find_element_by_css_selector( 'input' )
driver. find_element_by_css_selector( '#userA' )
driver. find_element_by_css_selector( '.telA' )
driver. find_element_by_css_selector( "input[type^='p']" )
"""
补充知识,通过By查找元素
导包:from selenium.webdriver.common.by import By
"""
from selenium. webdriver. common. by import By
driver. find_element( By. CSS_SELECTOR, "#userA" ) . send_keys( "liuyaohui" )
driver. find_element( By. ID, "passwordA" ) . send_keys( '123' )
driver. find_element( By. NAME, 'telA' ) . send_keys( '15537003170' )
driver. find_element( By. XPATH, "//*[@id='emailA']" ) . send_keys( '1783933592@qq.com' )
"""
-------------------------------------------------------------------------------
三、元素操作方法
1. clear() 清除文本
2. send_keys() 模拟输入
3. click() 单击元素
4. maximize_window() 最大化 --> 模拟浏览器最大化按钮
5. set_window_position(0, 0) -->设置窗口位置
6. driver.set_window_size(300, 400)
7. refresh() 刷新 --> 模拟浏览器F5刷新
8. close() 关闭 --> 模拟浏览器关闭按钮(关闭单个窗口)
9. back() 返回上一个页面
10. forward()进入下一个页面
11. quit() 关闭 --> 关闭所有WebDriver启动的窗口
1. size 返回元素大小
2. text 获取元素的文本
3. title 获取页面title
4. current_url 获取当前页面URL
5. get_attribute("xxx") 获取属性值;xxx:要获取的属性
"""
"""
-------------------------------------------------------------------------------
四、WebDriver鼠标、键盘操作
鼠标导包:from selenium.webdriver.common.action_chains import ActionChains
1. context_click() 右击 --> 此方法模拟鼠标右键点击效果
2. double_click() 双击 --> 此方法模拟鼠标双击效果
3. drag_and_drop() 拖动 --> 此方法模拟鼠标拖动效果
4. move_to_element() 悬停 --> 此方法模拟鼠标悬停效果
5. perform() 执行 --> 此方法用来执行以上所有鼠标方法
"""
from selenium. webdriver. common. action_chains import ActionChains
action = ActionChains( driver)
userA = driver. find_element_by_id( "userA" )
action. double_click( userA) . perform( )
"""
键盘导包:from selenium.webdriver.common
1. send_keys(Keys.BACK_SPACE)删除键(BackSpace)
2. send_keys(Keys.SPACE)空格键(Space)
3. send_keys(Keys.TAB)制表键(Tab)
4. send_keys(Keys.ESCAPE)回退键(Esc)
5. send_keys(Keys.ENTER)回车键(Enter)
6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
7. send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
"""
from selenium. webdriver. common. keys import Keys
userA. click( )
userA. send_keys( Keys. CONTROL, 'a' )
"""
-------------------------------------------------------------------------------
五、设置元素等待
方法:implicitly_wait(timeout) (timeout:为等待最大时长,单位:秒)
调用:driver.implicitly_wait(10) (driver:为浏览器实例化对象名称)
"""
driver. implicitly_wait( 10 )
"""
-------------------------------------------------------------------------------
六、下拉选择框、警告框、滚动条操作
选择框(select)
1.实现方式:
1.定位option选项 (找到该元素,然后直接选择)
2.通过Select类实现(导包:from selenium.webdriver.support.select import Select)
"""
driver. find_element_by_css_selector( "[value='sh']" ) . click( )
sleep( 2 )
driver. find_element_by_css_selector( "[value='gz']" ) . click( )
sleep( 2 )
driver. find_element_by_css_selector( "[value='bj']" ) . click( )
sleep( 2 )
from selenium. webdriver. support. select import Select
select = Select( driver. find_element_by_css_selector( "#selectA" ) )
select. select_by_index( 1 )
select. select_by_index( 3 )
select. select_by_index( 2 )
select. select_by_visible_text( "A上海" )
select. select_by_visible_text( "A重庆" )
select. select_by_visible_text( "A广州" )
select. select_by_value( "sh" )
select. select_by_value( "cq" )
select. select_by_value( "gz" )
"""
警告框(alert、confirm、prompt)
1. text --> 返回alert/confirm/prompt中的文字信息
2. accept() --> 接受对话框选项
3. dismiss() --> 取消对话框选项
"""
driver. find_element_by_css_selector( "#alerta" ) . click( )
alert = driver. switch_to. alert
print ( alert. text)
alert. accept( )
"""
滚动条(使用js代码实现)
js="window.scrollTo(0,1000)"
driver.execute_script(js)
"""
js = "window.scrollTo(0,1000)"
driver. execute_script( js)
sleep( 2 )
driver. quit( )
"""
-------------------------------------------------------------------------------
七、frame表单切换、多窗口切换
1).driver.switch_to.frame("myframe1") --> 切换表单方法
(myframe1:为frame表单的name或id)
2). driver.switch_to.default_content() --> 恢复默认页面方法
(在frame表单中操作其他页面,必须先回到默认页面,才能进一步操作)
"""
url = os. getcwd( ) + os. sep + '注册实例.html'
driver = webdriver. Chrome( )
driver. get( url)
current_handle = driver. current_window_handle
driver. find_element_by_css_selector( "#ZCA" ) . click( )
for handle in driver. window_handles:
if handle != current_handle:
driver. switch_to. window( handle)
driver. find_element_by_id( 'userA' ) . send_keys( '123456' )
driver. find_element_by_id( 'passwordA' ) . send_keys( '123456' )
driver. switch_to. window( current_handle)
driver. find_element_by_css_selector( "#user" ) . send_keys( "123456" )
"""
-------------------------------------------------------------------------------
八、窗口截图、验证码处理(验证码处理了解即可->cookie)
窗口截图:
get_screenshot_as_file(imgpath) --> 截取当前窗口
"""
driver. get_screenshot_as_file( 'file.png' )
sleep( 1 )
driver. quit( )