第三十二天&seleuium中web端自动化测试

1.Selenium API基础
导入:from selenium import  webdriver
创建对象:driver = webdriver.xxx()
浏览器尺寸相关操作:maximize_window()        最大化
                get_window_size()        获取浏览器尺寸
                set_window_size()        设置浏览器尺寸
浏览器的关闭操作:
                close()            关闭当前标签/窗口
                quit()            关闭所有标签/窗口
页面请求操作:driver.get(url)        请求某个url对应的响应
           refresh()                刷新页面操作
           back()                    回退到之前的页面
           forward()                前进到之后的页面
元素的定位:
直接调用型:driver.find_element_by_xxx(value)
使用By类型(需要导入By):先导入
from selenium.webdriver.common.by import By
            driver.find_element(By.xxx,value)
id        id定位
name    name属性值定位
class name        伪类名定位
tag name        标签名定位
link text        链接文本定位
xpath            xpath路径表达式
css selector    css选择器定位
八种定位方式的示例:
driver.find_element_by_xpath(value)
driver.find_element_by_css_selector(value)
driver.find_element_by_id(value)
driver.find_element_by_name(value)
driver.find_element_by_class_name(value)
driver.find_element_by_tag_name(value)
driver.find_element_by_link_text(value)
driver.find_element_by_partial_link_text(value)
元素的操作:
点击操作element.click()
清空/输入操作(只能操作可以输入文本的元素)
element.clear()
element.send_keys(data)

Selenium API高级:
多标签之间的切换
    场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况
获取所有窗口的句柄
handles = driver. window_handles
得到结果存在在列表里,几个窗口几个句柄,通过索引句柄调用窗口
通过窗口的句柄进入的窗口
driver.switch_to_window(handles[n])


多表单切换
什么是多表单?
实际上就是使用iframe/frame,引用了其他页面的链接,真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到,简单理解可以使页面中开了一个窗口显示另一个页面
处理方法:
定位到表单元素,再切换进入
el = driver.find_element_by_xxx(value)
            driver.switch_to.frame(el)    /driver.switch_to_frame(el)

 


弹出框操作:
进入到弹出框中        driver.switch_to.alert
接受accept        取消dismiss


滚动条:
driver.execute_script(js)            #执行js脚本
js = “window.scrollTo(0,document.body.scrollHeight)回到底部


鼠标和键盘操作
导入动作链类,动作链可以储存鼠标的动作
        from selenium.webdriver import ActionChains        
        获取元素                                                                                   el = driver.find_element_by_xxx(value)
        context_click(el)       对el执行右击
        执行ActionChains中储存的所有动作
                       perform()
eg:            ActionChains(driver).context_click(ele).perform()     点击鼠标右键      
            ActionChains(driver). click(ele).perform()            点击鼠标左键
            ActionChains(driver).move_to_element(el).perform() 鼠标悬停
 
键盘操作:
1)键盘操作
        键盘操作使用的是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)
(3)操作等待
强制等待:导入定时等待库
from time import sleep 或者 import time
time.sleep(10) # 表示强行等待10s在执行下一句代码 这种等待方式时间到了就会执行下个语句,但比较死板,不能保证在等待的时间内元素真正被加载了出来。而且如果等待的元素已经被加载出来,还需要等待到时间才会执行下一句,浪费时间。
隐式等待:
driver.implicitly_wait(30) #等待30s
注:隐式等待的作用域是全局,所以一般设置在整局代码的头几行。
隐式等待采用全部设置,也就是说,你所有的findElement方法都会最多等待30s
显示等待
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秒去判断,指定时间截止。如果超时就会抛出异常。
总结:
强制等待:傻瓜式等待,不智能隐式等待:全局通用,只需设置一次,很智能(等到了就走,不会浪费时间)
显式等待:等待元素处于特定条件的时候使用,很智能(等到了就走,不会浪费时间)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值