Web自动化——python

1.八大元素定位

 元素属性定位:id、name、class_name
 元素标签定位:tag_name
 超链接定位:link_text、paratial_link_text
 元素路径定位:XPath
 css选择器定位:CSS

1.如果一次性定位一组元素,用find_elements,使用find_element会报错

2.元素基本操作

1.点击:click()
2.输入内容:send_keys()
3.清除:clear()

3.浏览器常用操作

1.浏览器最大化:maximize_window()
2.设置浏览器窗口大小:set_window_size(weigth,height)
3.设置浏览器窗口位置:set_window_position(x,y)
4.浏览器后退:back()
5.浏览器前进:forword()
6.浏览器刷新:refresh()
7.关闭当前窗口:close()   关闭的一般是主窗口
8.关闭驱动对象:quit()
9.获取页面title:title  获取的一般是主页面
10.获取当前页面的url:current_url   获取的一般是主页面

不切换窗口时,7 9 10都是操作的主窗口

4.获取元素信息的常用方法

1.获取元素大小:size
2.获取元素文本:text
3.获取属性值:get_attribute("xxx")   传递的参数是元素的属性名   判断一组元素是否是我们想要的值

在特殊应用场景中使用:

4.判断元素是否可见:is_displayed()  例如:element.is_display()
5.判断元素是否可用:is_enabled()   是否可以点击
6.判断元素是否被选中:is_selected()    用来检查复选框或者单选框的按钮是否被选中

5.鼠标和键盘相关操作

在selenium中将鼠标相关的操作封装在ActionChains,这些操作必须结合perform()执行
action = ActionChains(driver)

1.点击:click()
2.右击:context_click(element)
3.双击:double_click(element)
4.悬停:move_to_element(element)
5.拖拽:drag_and_drop(source,target)
6.执行:perform()

键盘相关操作:
selenium将键盘相关的操作都封装在Keys类中

1.删除键:send_keys(Keys.BACK_SPACE)   BackSpace
2.空格键:send_keys(Keys.SPACE)
3.制表键:send_keys(Keys.TAB)
4.回退键(ESC):send_keys(Keys.ESCAPE)
5.回车键:send_keys(Keys.ENTER)
6.全选:send_keys(Keys.CONTROL,'a')
7.复制:send_keys(Keys.CONTROL,'c')
8.上传文件:send_keys(上传文件的路径)

6.元素等待

1.为什么要设置元素等待?
由于电脑配置原因或者网络配速问题,在查找元素时未被第一时间加载出来,会抛出未找到该元素的异常


2.什么是元素等待?
元素在第一次未被找到时,元素等待设置的时长被激活,如果在设置的有效时长内找到元素就会继续执行代码,否则抛出未找到元素异常

1.隐式等待

隐式等待方法:

driver.implicitly_wait(timeout)

1.隐式等待是全局设置,设置一次应用于全局
2.一般情况下是前置必写代码

2.显示等待

selenium把显示等待的相关操作封装在WebDriverWait类中

WebDriverWait(driver,timeout,poll_frequency)
1.driver:浏览器驱动对象
2.timeout:超时的时长
3.poll_frequency:检测间隔的时间,默认是0.5s
element = WebDriverWait(driver,10,1).until(lambda x:x.find_element(By.ID,"ID"))

7.下拉选择框

标签:<select>

1.通过css定位(直接定位option)
2.通过使用select类来控制(控制父类)

select= Select(element)
select.by_index()  下标,从0开始
select.by_value()  根据value定位
select.by_visible_text(text) 根据文本定位

注意:
1.实例化select时,需要参数为select标签元素
2.调用select类下面的的方法,只通过索引、value属性值、显示文本去控制的,不需要click事件

8.弹出框

1.alert:警告框
2.confirm:确认框
3.prompt:提示框

对弹出窗一定要进行处理接下来的代码才能够运行,否则接下来的代码不生效
如何处理对话框?

1.获取弹出窗对象:alert = driver.switch_to.alert
alert.text:返回alert/confirm/prompt中的文字信息
alert.accept():接收对话框选项
alert.dismiss():取消对话框选项

9.滚动条操作

应用场景:页面注册同意条款,滚动条滚到最后才能点击同意

1.js = "windows.scrollTo(0,10000)"  先设置js控制滚动条语句  0:左边距;10000:上边距
2.driver.execute_script(js)  调用js执行代码

10.frame表单的切换

常见frame表单:frame、iframe两种
为什么要切换frame表单?

当同一个页面有很多表单时,浏览器无法主动从一个表单切换到另一个表单

如何切换frame表单?

1.driver.switch_to.frame(frame_reference)
    frame_reference:可以为frame框架的name、id或者定位到的frame元素(iframe)
2.driver.switch_to.default_content()   --->恢复默认页面的方法  因为切换语句只有在主目录才有用

注意:从一个子frame表单切换到另一个子frame表单时要先恢复到默认页面,否则报错

11.多窗口切换

为什么要切换窗口?
selenium默认情况下只会在主窗口,如果不切换窗口,那么浏览器无法操作除了主窗口以外的窗口内的任何元素
如何切换窗口?

在selenium中封装了获取当前窗口的句柄、获取所有窗口的句柄和切换到指定窗口句柄的方法:
(句柄是窗口的唯一识别码)
1.driver.current_window_handle        -->获取当前窗口的句柄
2.driver.window_handles      -->获取所有窗口句柄
3.driver.switch_to.window(handle)  -->切换到指定窗口句柄

12.窗口截图、验证码处理

窗口截图:

driver.get_screenshot_as_file(imgpath)
  imgpath:图片保存的路径  ./pic.png :保存在当前目录下,且图片名称为pic.png
                    ../image/pic1.png:保存在上级目录的image文件夹下,且图片名称是pic1.png

随机生成文件名:

driver.get_screenshot_as_file("../image/%s.png"%(time.strftime("%Y_%m_%d %H_%M_%s")))
strftime:将时间转换成字符串函数

应用场景:多条case测试失败,可以使用时间戳的形式进行截图

验证码:
防止恶意请求
注:selenium没有对验证码的处理方法
常见的验证码处理方式:

1.去掉验证码(测试环境采用)
2.设置万能的验证码(生产环境和测试环境)
3.验证码识别技术(通过py-tesseract来识别图片验证码;识别率很难)
4.记录cookie(通过记录cookie进行跳过登录)推荐使用

selenium操作cookie:

1.get_cookie(name)  -->获取制定cookie  name是cookie
2.get_cookies()   -->获取本网站所有的本地cookies
3.add_cookie(cookie_dict)   -->添加cookie
    cookie_dict:一个字典对象,必选键包括:name、value
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值