2023年11月25日发(作者:)

python实现WEB⾃动化(python+selenium

⼀、浏览器驱动

selenium操作不同的浏览器,需要下载不同浏览器的驱动

chrome浏览器为例:

1、进⼊到下载页⾯,找到符合⾃⼰浏览器版本的驱动

2、下载好了之后,右键解压到当前⽂件夹

3、将得到的放到Python的安装⽬录

Firefox 浏览器驱动: 浏览器驱动

Chrome 浏览器驱动:备⽤地址

IE 浏览器驱动:IEDriverServer

Edge 浏览器驱动:MicrosoftWebDriver

from selenium import webdriver

driver = () # Chrome 浏览器

#driver = x() # Firefox 浏览器

#driver = () # Internet Explorer 浏览器

#driver = () # Edge 浏览器

#通过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 = ()

# 通过get⽅法打开⽹址

("*")

sleep(2)

# 通过id定位 user_login

# 通过 send_keys('XXX')输⼊内容

_element_by_id('user_login').send_keys('随便输⼊')

sleep(2)

# 通过name定位 log

# 通过 clear()⽅法 清除输⼊的内容

_element_by_name('log').clear()

sleep(2)

# 通过class_name定位 input

_element_by_class_name('input').send_keys('ad')

sleep(2)

# 通过tag_name定位 input

_element_by_tag_name('input').send_keys('min')

_element_by_css_selector('#wp-submit').click()

close()关闭当前窗⼝

quit()关闭所有浏览器并退出驱动

text 获取元素⽂本属性

from selenium import webdriver

from time import sleep

d = ()

('*')

_element_by_xpath('//label[@for="user_login"]/input').send_keys('admin')

sleep(1)

#通过css定位到⽤户名

_element_by_css_selector('#user_').send_keys('admin123')

sleep(1)

_element_by_css_selector('#wp-submit').click()

sleep(1)

# text 获取元素的⽂本信息

login_msg = _element_by_css_selector('.display-name').text

print(login_msg)

()#关闭浏览器

()#关闭浏览器并且关闭驱动

最⼤化窗⼝maximize_window()

隐式等待implicitly_wait(10)

判断元素是否可见is_displayed()

from selenium import webdriver

from time import sleep

d = ()

# 最⼤化窗⼝

ze_window()

# 隐式等待,设置最⼤的等待时长,只对查找元素(find_elementXXX)⽣效

itly_wait(10)

('*')

_element_by_css_selector('#user_login').send_keys('admin')

# 判断元素是否可见 is_displayed()

password_result = _element_by_css_selector('#user_pass').is_displayed()

print('可见的元素:'+str(password_result))

other_result =

_element_by_css_selector('[name="redirect_to"]').is_displayed()

print('不可见的元素:'+str(other_result))

# html type="hidden" 属性 是不可见的

submit() ⽤于提交表单

点击登录按钮,⼀般情况下,使⽤click()进⾏点击

有些时候也可以使⽤submit()代替click(),相当于敲回车

#_element_by_css_selector('#wp-submit').click()

_element_by_css_selector('#wp-submit').submit()

sleep(1)

get_attribute(“属性”) 获得属性值

获取属性的值,根据属性名称获取对应的值

# get_attribute('属性名称')

att = _element_by_css_selector('#user_login').get_attribute('size')

print(att)

⿏标悬停

需要导⼊:

from ver import ActionChains

mte = _element_by_css_selector('#menu-posts .wp-menu-name')# 需要悬停的元素

#ActionChains(浏览器).move_to_element(悬停的元素).perform()

# perform()执⾏操作

ActionChains(d).move_to_element(mte).perform()

表单切换

switch_(需要切换到的表单)

switch_t_content()切换到最外层表单

_(frames)

_element_by_css_selector('#tinymce').send_keys('这是正⽂')

sleep(3)

# 切换到最外层表单

_t_content()

_element_by_css_selector('#publish').click()

像表单的切换/⿏标的悬停 为提⾼成功率,最好是在操作后sleep(1)

切换窗⼝ switch_(需要切换到的窗⼝)

获取所有窗⼝,以列表的形式返回过来 _handles

from selenium import webdriver

from time import sleep

d = ()

# 最⼤化窗⼝

ze_window()

# 隐式等待,设置最⼤的等待时长,只对查找元素(find_elementXXX)⽣效

itly_wait(10)

('*')

_element_by_css_selector('#q').send_keys("appium环境搭建")

_element_by_css_selector('.ic-search').click()

sleep(3)

# 获取所有窗⼝,以列表的形式返回过来

all_windows = _handles

print(all_windows)

#切换窗⼝,根据所有窗⼝的下标来切换

_(all_windows[1])

sleep(3)

_element_by_css_selector('#q').clear()

关于select标签的下拉框如何进⾏选择

⾸先需要先导⼊⼀个包(注意SelectS需要⼤写)

from import Select

# 使⽤Select⽅法进⾏选择

# 先导⼊Select from import Select

# 需要先定位到下拉框

elements = _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_

from selenium import webdriver

from time import sleep

from ver import ActionChains

d = ()

# 最⼤化窗⼝

ze_window()

# 隐式等待,设置最⼤的等待时长,只对查找元素(find_elementXXX)⽣效

itly_wait(10)

('https:/*')

mte = _element_by_link_text('设置')

ActionChains(d).move_to_element(mte).perform()

sleep(1)

from selenium import webdriver

from time import sleep

d = ()

('*')

#To(A,B);# 控制浏览器的滚动条

#To(A,B);# 控制浏览器的滚动条 A 表⽰与左边框的距离 B表⽰与上边框的距离

# js_code1 = "To(0,600);"

# js_code2 = "To(0,1200);"

#elector('css的定位').removeAttribute('移除的属性名');

js_code1 =

'''elector('[name="testcookie"]').removeAttribute('type');'''

e_script(js_code1)

sleep(5)