Day2 Selenium API高级

多表单切换

在网页中,表单嵌套是很常见的情况,尤其是在登录的场景

什么是多表单?

实际上就是使用iframe/frame,引用了其他页面的链接,真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到,简单理解可以使页面中开了一个窗口显示另一个页面

处理方法

直接使用id值切换进表单

driver.switch_to.frame(value)/driver.switch_to_frame(value)

定位到表单元素,再切换进入

el = driver.find_element_by_xxx(value)

driver.switch_to.frame(el) /driver.switch_to_frame(el)

案例: QQ空间:https://qzone.qq.com/

 

 

 弹出框操作          

1) 进入到弹出框中         driver.switch_to.alert     

2) 接收警告         accept()     

3) 解散警告         dismiss()     

4) 发送文本到警告框

        send_keys(data)

 

 

滚动条

 

 

 

 键盘操作       

 键盘操作使用的是Keys类,一般配合send_keys使用         

* 导入         from selenium.webdriver.common.keys import Keys         

* 常用键盘操作             

send_keys(Keys.BACK_SPACE)     删除键(BackSpace)                         send_keys(Keys.SPACE)         空格键(Space)                        

send_keys(Keys.TAB)             制表键(Tab)                          

send_keys(Keys.ESCAPE)         回退键(Esc)                          

send_keys(Keys.ENTER)         回车键(Enter)                          

send_keys(Keys.CONTROL,‘a’)     全选(Ctrl+A)

send_keys(Keys.CONTROL,‘a’)     全选(Ctrl+A)                          send_keys(Keys.CONTROL,‘x’)     剪切(Ctrl+X)                          send_keys(Keys.CONTROL,‘v’)     粘贴(Ctrl+V)                        

 send_keys(Keys.F1)             键盘 F1                 

 send_keys(Keys.F12)             键盘 F12

 Selenium API高级

浏览器等待        

 1) 为什么要进行等待?                  

        1.网速慢      

        2.网站内容过多         

        3.如果不进行等待而直接定位元素,可能会抛出异常     

2) selenium中等待的分类:                              

        强制等待       

         导入定时等待库 from time import sleep 或者 import time          

        显示等待            

            from time import sleep 或者 import time    

            from selenium.webdriver.support.wait import WebDriverWait #导入显性等待的包

           from selenium.webdriver.support import expected_conditions as EC #判断所需要的元素

           是否已经被加载出来

           from selenium.webdriver.common.by import By #定位

WebDriverWait类是由WebDirver 提供的等待方法。显示等待明确的要等到某个元素的出现,在设置时间内每隔x秒去判断一下指定的元素是否加载完,加载完了就执行下一步,否则继续每隔x秒去判断,指定时间截止。如果超时就会抛出异常。 

强制等待:傻瓜式等待,不智能

隐式等待:全局通用,只需设置一次,很智能(等到了就走,不会浪费时间)

显式等待:等待元素处于特定条件的时候使用,很智能(等到了就走,不会浪费时间)

        隐式等待

               driver.implicitly_wait(30) #等待30s

            隐式等待的作用域是全局,所以一般设置在整局代码的头几行。 隐式等待采用全部设置,也就是说,你所有的findElement方法都会最多等待30s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值