selenium史上⾮常全⾮常全⾯的常⽤命令【持续更新】webdriver常⽤的类
Webdriver类 :元素定位、打开浏览器、元素获取,切换页⾯
ActionChains类 :⿏标操作、悬停、点击、双击、右击等
select类 :下拉框的处理
switchTo类:⽤来做切换,不同的表单、窗⼝
- Webdriver类 :元素定位、打开浏览器、元素获取,切换页⾯
from selenium import webdriver
dr = webdriver.Firefox()
<()获取打开url⽹页
dr.set_windows_size()设置浏览器窗⼝⼤⼩
dr.find_element_by_id(‘kw’).clear()#清除内容
dr.find_element_by_id(‘su’).click()#点击
dr.find_element_by_id(‘kw’).send_keys(‘测试’) #发送⽂字内容
dr.current_url 当前浏览器的url连接
dr.title #⽹页标题
dr.find_element_by_id(‘kw’).text #元素⽂本
dr.find_element_by_id(‘kw’).content #元素原⽹页⽂本
dr.save_screenshot(‘d://a.png’) #屏幕截图
dr.current_window_handle#当前窗体
dr.window_handles #所有窗体
element.submit() #提交
close()关闭单个窗体
quit()关闭所有的窗体
元素的定位以及操作
id
name
classname
linktext
partiallinktext
tagname
cssselector
xpath
通过元素的ID定位元素:findElement(By.id(“ele”));
通过元素的名称定位元素:findElement(By.name(“ele”));
通过元素的html中的位置定位元素:findElement(By.xpath(“ele”));
通过元素的标签名称定位元素:findElement(By.tagName(“ele”));
通过元素的链接名称定位元素:findElement(By.LinkText(“ele”));
通过元素的类名定位元素:findElement(By.className(“ele”));
通过元素的css定位元素:findElement(By.cssSelector(“ele”);
通过元素的部分链接名称定位元素:findElement(By.pareialLinkText(“ele”));
对ID为ele的元素进⾏点击操作:driver.findElement(By.id(ele));
存储勾选情况:element.isSelected()
验证元素是否可展⽰:element.isDisplayed()
获取标签名称:TagName()
获取指定属性的值:Attribute()
存储可编辑状态:element.isEnabled()
操作⿏标事件
#导⼊⿏标基类
from selenium.webdrivermon.action_chains import ActionChains
#把浏览器驱动传ActionChains,调⽤__init__⽅法实现⿏标悬停
ActionChains(driver).move_to_element(ele).perform()
#将⿏标向右挪动100像素,向下挪动10像素
ActionChains(driver).move_to_element_with_offset(ele,100,10)
#双击
ActionChains(driver).double_click(ele).perform()
#右击
ActionChains(driver).context_click(ele).perform()
#拖动滑块
#先定位到这个滑块,往右拖动200像素
ele2 = driver.find_element_by_name(‘name’)
ActionChains(driver).drag_and_drop_by_offset(ele,200,0).perform()
#拖动滑块,从⼀个元素的位置开始拖动到另⼀个元素的位置停⽌
ele_start = driver.find_element_by_name(‘name’)
ele_end = driver.find_element_by_name(‘name2’)
ActionChains(driver).drag_and_drop(ele_start,ele_end)
键盘事件
#导⼊键盘事件
from selenium.webdrivermon.keys import Keys
#输⼊字符
driver.find_element_by_name(‘name’).send_keys(‘text’)
#退格
driver.find_element_by_name(‘name’).send_keys(Keys.BACK_SPACE) #输⼊空格
driver.find_element_by_name(‘name’).send_keys(Keys.SPACE)
#全选,ctrl+A
driver.find_element_by_name(‘name’).send_keys(Keys.CONTROL,‘a’) #复制
driver.find_element_by_name(‘name’).send_keys(Keys.CONTROL,‘c’) #粘贴
driver.find_element_by_name(‘name’).send_keys(Keys.CONTROL,‘v’) #回车
driver.find_element_by_name(‘name’).send_keys(Keys.ENTER)
三种时间的等待⽅式
import time
等待两秒,显⽰等待
time.sleep(2)
#隐式等待,等待元素已经出来了再运⾏,超过时间报错,时间内加载完成则继续进⾏
#如果后⾯没有其他类型的等待设置,则默认是全局性的参数,后⾯的动作都会按这个设定进⾏等待
driver.implicitly_wait(10)
#webdriver⾃带的时间等待
from selenium.webdriver.support.ui import WebDriverWait
selenium怎么使用
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdrivermon.by import By
#调⽤driver,等待5秒,每5秒时间检测⼀次,直到这个元素出现,如果取反则⽤until_not(直到这个空间不出现)testWite = WebDriverWait(driver,5,0.5).until(EC.presence_of_all_elements_located(By.ID,‘id’))
多窗⼝形态
#打印当前窗体信息(所有的窗体信息),如果有多个值显⽰的是list
print(driver.window_handles)
#打印当前焦点所在的窗体信息
print(driver.current_window_handle)
#切换窗体,后⾯是⽬前已经打开窗体的列表
driver.switch_to.window(driver.window_handles[1])
#⼩应⽤:切换窗体到最初的url页的窗体
now_handle = driver.current_window_handle
#click其它窗体
all_handles = driver.window_handles
for handle in all_handels:
if handle == now_handle:
driver.switch_to.window(handle)
alert弹出框
#切换到alert弹出框,输⼊⽂本
driver.switch_to.alert.send_keys(‘text’)
#获取alert翻出框的⽂本信息
driver.switch_
#获取确定按钮
driver.switch_to.alert.accept()
#获取取消按钮
driver.switch_to.alert.dismiss()
#截图保存,注意alert弹窗是没法截图的
<_screenshot_as_file(“c:/ven/test.jpg”)
iframe的相关操作
#第⼀种⽅式:有ID和name的属性值
driver.switch_to.frame(‘id/name’) #如果id是动态变化的不能直接这样⽤
#第⼆种⽤法;先定义到这个iframe所在的控件属性,在执⾏切换到这个iframe
fm = driver.find_element_by_xpath(‘xpath’)
driver.switch_to.frame(fm)
#切换到这个iframe后就可以操作这个控件了
driver.find_element_by_xpath(‘x’).send_keys(‘name’)
#第三种⽅法:通过定位元素的tagname来到所有iframe列表,再切换到⾃⼰想要的那个iframe
fm = driver.find_element_by_tag_name(‘iframe’)
driver.switch_to.frame(fm[1])
#从⼦iframe切换到⽗frame
driver.switch_to.parent_frame()
#切换到主⽂档
driver.switch_to.default_content()
#时间框的处理:定位到这个控件以后,清空,重新输⼊值
driver.find_element_by_name(‘name’).send_keys(‘2020-02-24’)
#有的输⼊框带readonly属性,先调⽤js来去掉readonly的属性
#调⽤js到页⾯元素删除页⾯元素的相关属性
el = driver.find_element_by_name(‘name’)
js = “ElementByTagId(‘id’)[0].removeAttribute(‘readonly’)” #有ID的控件
js = “ElementsByName(‘name’)[0].removeAttribute(‘readonly’)” #有name的控件,定位元素⼀定要⽤复数js = “ElementsByTagName(‘input’)[0].removeAttribute(‘readonly’)” #通过定位控件的标签来定位元素
#每种⽅法读取js
el.send_keys(‘aaaa’)
验证码的处理思路:通过接⼝请求拿到对应的验证码信息、让开发给万能码、
注⼊cookies
#如何注⼊cookie
import json
<(‘’)
#设置⼀个⽐较长的等待时间,在登录页⼿⼯去输⼊账号、密码和验证码
time.sleep(60)
#⼿⼯登录成功后获取cookie的信息,并保存起来
cookies = _cookies()
cookies_json = json.dumps(cookies)
with open(‘cookiesFile.json’,‘w’) as f:
f.write(cookies_json)
#读取cookies存储的json⽂件,再逐个添加到cookie中,达到像我们平时不⽤登录打开⽹页就保持了登录效果⼀样的效果。
with open(‘cookiesFile.json’,‘r’) as f:
cookieInfor = json.ad())
#遍历cookie列表,添加cookie
for cookie in cookieInfor:
driver.add_cookie(cookie)
#页⾯刷新
⽂件处理
#如果是input标签,type是file类型,则直接可以通过send_keys来发送路径上传driver.find_element_by_name(‘file’).send_keys(‘D:/test.png’)
#⾮input标签autolt去上传⽂件
#下载autolt软件,打开以后拖动光标到浏览路径的位置,可以看到相关信息
#打开autoscript编辑器,写脚本,保存⽂件,在保存为exe⽂件
import os
driver.find_element_by_name(‘updata’).click()#点击上传⽂件
time.sleep(5)
os.system(“D:\”)#调⽤system⽅法
如何移动滚动条
#已送到页⾯的底部,设置⼀个⾮常⼤的值去移动滚动条
js = “var q = document.documentElement.scrollTop = 10000”
#相对当前坐标移动到坐标
#以当前位置为基点,偏移到相关的位置
#⾃动化
‘’’
先拿到⼿⼯测试⽤例,来标注那个⽤例需要⽤到⾃动化
‘’’

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。