python实现WEB⾃动化(python+selenium)
⼀、浏览器驱动
selenium操作不同的浏览器,需要下载不同浏览器的驱动
以chrome浏览器为例:
1、进⼊到下载页⾯,到符合⾃⼰浏览器版本的驱动
2、下载好了之后,右键解压到当前⽂件夹
3、将得到的放到Python的安装⽬录
Firefox 浏览器驱动:浏览器驱动
Chrome 浏览器驱动:备⽤地址
IE 浏览器驱动:IEDriverServer
Edge 浏览器驱动:MicrosoftWebDriver
from selenium import webdriver
driver = webdriver.Chrome() # Chrome 浏览器
#driver = webdriver.Firefox() # Firefox 浏览器
#driver = webdriver.Ie() # Internet Explorer 浏览器
#driver = webdriver.Edge() # Edge 浏览器
#通过get()⽅法打开⽹页
d.get('*')
⼆、定位⽅式
id ---> find_element_by_id()
name ---> find_element_by_name()
class ---> find_element_by_class_name()
tag_name ---> find_element_by_tag_name()
⽂本链接 ---> find_element_by_link_text()
部分⽂本链接 ---> find_element_by_partial_link_text()xpath
xpath ---> find_element_by_xpath()
css_selector ---> find_element_by_css_selector()
send_keys()输⼊
clear()清空输⼊内容
click()单击操作
# 使⽤selenium 之前,需要先导⼊
from selenium import webdriver
from time import sleep
# 初始化⼀个chrome浏览器
d = webdriver.Chrome()
# 通过get⽅法打开⽹址
d.get("*")
sleep(2)
# 通过id定位 user_login
# 通过 send_keys('XXX')输⼊内容
d.find_element_by_id('user_login').send_keys('随便输⼊')
sleep(2)
# 通过name定位 log
# 通过 clear()⽅法清除输⼊的内容
d.find_element_by_name('log').clear()
sleep(2)
# 通过class_name定位 input
d.find_element_by_class_name('input').send_keys('ad')
sleep(2)
# 通过tag_name定位 input
d.find_element_by_tag_name('input').send_keys('min')
d.find_element_by_css_selector('#wp-submit').click()
close()关闭当前窗⼝
quit()关闭所有浏览器并退出驱动
text 获取元素⽂本属性
from selenium import webdriver
from time import sleep
d = webdriver.Chrome()
d.get('*')
#通过xpath定位到⽤户名
d.find_element_by_xpath('//label[@for="user_login"]/input').send_keys('admin')
sleep(1)
#通过css定位到⽤户名
d.find_element_by_css_selector('#user_pass.input').send_keys('admin123')
sleep(1)
d.find_element_by_css_selector('#wp-submit').click()
element表格横向滚动条 sleep(1)
# text 获取元素的⽂本信息
login_msg = d.find_element_by_css_selector('.display-name').text
print(login_msg)
d.close()#关闭浏览器
d.quit()#关闭浏览器并且关闭驱动
最⼤化窗⼝maximize_window()
隐式等待implicitly_wait(10)
判断元素是否可见is_displayed()
from selenium import webdriver
from time import sleep
d = webdriver.Chrome()
# 最⼤化窗⼝
d.maximize_window()
# 隐式等待,设置最⼤的等待时长,只对查元素(find_elementXXX)⽣效
d.implicitly_wait(10)
d.get('*')
d.find_element_by_css_selector('#user_login').send_keys('admin')
# 判断元素是否可见 is_displayed()
password_result = d.find_element_by_css_selector('#user_pass').is_displayed()
print('可见的元素:'+str(password_result))
other_result =
d.find_element_by_css_selector('[name="redirect_to"]').is_displayed()
print('不可见的元素:'+str(other_result))
# 在html中 type="hidden" 属性是不可见的
submit() ⽤于提交表单
点击登录按钮,⼀般情况下,使⽤click()进⾏点击
有些时候也可以使⽤submit()代替click(),相当于敲回车
#d.find_element_by_css_selector('#wp-submit').click()
d.find_element_by_css_selector('#wp-submit').submit()
sleep(1)
get_attribute(“属性”) 获得属性值
获取属性的值,根据属性名称获取对应的值
# get_attribute('属性名称')
att = d.find_element_by_css_selector('#user_login').get_attribute('size')
print(att)
⿏标悬停
需要导⼊:
from selenium.webdriver import ActionChains
mte = d.find_element_by_css_selector('#menu-posts .wp-menu-name')# 需要悬停的元素 #ActionChains(浏览器).move_to_element(悬停的元素).perform()
# perform()执⾏操作
ActionChains(d).move_to_element(mte).perform()
表单切换
switch_to.frame(需要切换到的表单)
switch_to.default_content()切换到最外层表单
#切换表单 switch_to.frame()
# 先定位到需要切换的表单
#⽅法⼀
iframe = d.find_elements_by_tag_name("iframe")[0]
d.switch_to.frame(iframe)
#⽅法⼆
d.switch_to.frame(0)
#⽅法三
frames = d.find_element_by_css_selector('#content_ifr')
d.switch_to.frame(frames)
d.find_element_by_css_selector('#tinymce').send_keys('这是正⽂')
sleep(3)
# 切换到最外层表单
d.switch_to.default_content()
d.find_element_by_css_selector('#publish').click()
像表单的切换/⿏标的悬停为提⾼成功率,最好是在操作后sleep(1)秒
切换窗⼝ switch_to.window(需要切换到的窗⼝)
获取所有窗⼝,以列表的形式返回过来 d.window_handles
from selenium import webdriver
from time import sleep
d = webdriver.Chrome()
# 最⼤化窗⼝
d.maximize_window()
# 隐式等待,设置最⼤的等待时长,只对查元素(find_elementXXX)⽣效 d.implicitly_wait(10)
d.get('*')
d.find_element_by_css_selector('#q').send_keys("appium环境搭建")
d.find_element_by_css_selector('.ic-search').click()
sleep(3)
# 获取所有窗⼝,以列表的形式返回过来
all_windows = d.window_handles
print(all_windows)
#切换窗⼝,根据所有窗⼝的下标来切换
d.switch_to.window(all_windows[1])
sleep(3)
d.find_element_by_css_selector('#q').clear()
关于select标签的下拉框如何进⾏选择
⾸先需要先导⼊⼀个包(注意Select的S需要⼤写)
from selenium.webdriver.support.ui import Select
# 使⽤Select⽅法进⾏选择
# 先导⼊Select 类from selenium.webdriver.support.ui import Select
# 需要先定位到下拉框
elements = d.find_element_by_css_selector('#role')
#Select(需要操作下拉框).根据什么操作
Select(elements).select_by_index(2)# 根据index,下标定位,从0开始 sleep(3)
Select(elements).select_by_value('administrator')#根据value定位
sleep(3)
Select(elements).select_by_visible_text('投稿者')#根据⽂本定位
警告框的处理
switch_to.alert
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
d = webdriver.Chrome()
# 最⼤化窗⼝
d.maximize_window()
# 隐式等待,设置最⼤的等待时长,只对查元素(find_elementXXX)⽣效 d.implicitly_wait(10)
d.get('https:/*')
mte = d.find_element_by_link_text('设置')
ActionChains(d).move_to_element(mte).perform()
sleep(1)
d.find_element_by_css_selector('.setpref').click()
sleep(1)
d.find_element_by_css_selector('.prefpanelgo').click()
# 获取警告框的⽂本信息
alert_msg = d.switch_
print(alert_msg)
# 接受警告框 accept()
d.switch_to.alert.accept()
# 取消警告框 dismiss()
d.switch_to.alert.dismiss()
js代码
from selenium import webdriver
from time import sleep
d = webdriver.Chrome()
d.get('*')
#window.scrollTo(A,B);# 控制浏览器的滚动条
#window.scrollTo(A,B);# 控制浏览器的滚动条 A 表⽰与左边框的距离 B表⽰与上边框的距离 # js_code1 = "window.scrollTo(0,600);"
# js_code2 = "window.scrollTo(0,1200);"
#document.querySelector('css的定位').removeAttribute('移除的属性名');
js_code1 =
'''document.querySelector('[name="testcookie"]').removeAttribute('type');'''
d.execute_script(js_code1)
sleep(5)
定位⼀组元素find_elements_by_XXX
以列表的形式返回
# 定位⼀组元素
goodlist = d.find_elements_by_css_selector('.goods_title')
choice(goodlist).click()
————————————————
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论