美文网首页
Web自动化总结

Web自动化总结

作者: 今天学习吗 | 来源:发表于2023-03-16 17:50 被阅读0次

    一、工具:

    selenium

    二、元素定位:

    方式一:通过元素的id (一个id值是唯一的,只属于一个元素)
    方式二:通过元素的class
    方式三:通过元素的name
    方式四:通过超链接文本by_link_text (是精确匹配,需要文本完全相同才能匹配)
    方式五:通过超链接文本(模糊匹配)by_partial_link_text
    方式六:通过元素标签tag_name
    方式七:通过css选择器
    方式八:xpath(万能,稳定,重点)
    Xpath表达式:
    xpath语法规则:
    / 根节点,节点分隔符, //任意位置

    • 任意元素 @属性
      . 当前节点 ..父级节点
      text 文本值
      格式:
      属性://[@属性='属性值']
      文本值://
      [text()='文本值']
      高级查询:
      contains模糊查询:contains(@属性/text(), 值)]
      starts-with 匹配一个属性开始位置的关键字

    三、浏览器常用基本操作

    刷新页面: driver.refresh()
    获取浏览器窗口大小:driver.get_window_size()
    设置浏览器窗口大小:driver.set_window_size()
    浏览器最大化窗口:driver.maximize_window()
    浏览器全屏:driver.fullscreen_window()
    获取浏览器窗口个数:driver.get_window_handle
    len(driver.window_handles)
    切换到指定窗口: 先获取窗口列表:all_window=driver.window_handles
    切换窗口参数:切换到第几个,索引从0开始:driver.switch_to.window(all_window[1])
    前进:driver.forward()
    后退:driver.back()
    关闭:driver.close() 关闭当前窗口
    退出:driver.quit() 完全退出浏览器
    关闭alert弹窗,confirm弹窗处理:driver.switch_to.alert.accept()
    driver.save_screenshot(‘./test.png’)截图

    四、web自动化测试常见报错分析

    1、检查元素的定位是否写正确
    2、页面元素进行获取的时候查看是否已经加载出来,(等待时间)
    3、元素在页面上不可见,需要拖动下拉框或者放大窗口
    4、页面元素在iframe标签里面
    5.元素需要切换到新窗口
    6.元素隐藏(js元素隐藏属性更改为可见)

    五、切换frame

    1.通过frame的名字
    driver.switch_to.frame('frame_name')frame的名字
    driver.switch_to.frame('login_frame')
    2.通过索引
    driver.switch_to.frame(1)索引从0开始
    如何判断页面中有多个frame标签,并知道需要定位的frame标签是第几个?
    答:可以在页面开发者工具中,CTRL+F 中输入//iframe,就可以显示所有iframe标签,切换标签后,
    到哪个标签,目标位置显示蓝色,就是第几个。
    3.通过webelement(元素定位的结果)
    driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="login_frame"]'))
    4.通过id的值
    driver.switch_to.frame('login_frame')
    退出frame:如果在frame里面操作元素,再想回到主页面里面进行元素操作,就必须先退出当前的frame
    driver.switch_to.default_content()

    六、三种等待时间

    1.强制等待
    导入:from time import sleep
    调用:sleep(3):强制等待3秒
    2.隐式等待(implicitly_wait)
    driver.implicitly_wait(10)
    在10s时间内,页面加载完成,进行下一步操作
    3.显式等待
    导入:
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    调用:
    WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//[@rows="4"]')))
    匿名函数:
    WebDriverWait(driver,16).until(lambda x : x.find_element(By.XPATH,'//
    [@rows="4"]')

    七、键盘操作

    所有的键盘操作都是通过 send_keys()里面通过改变参数实现的。
    在使用键盘按键方法前需要先导入 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.COMMAND) 回退键(Esc)
    send_keys(Keys.ENTER) 回车键(Enter)
    send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
    send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
    send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
    send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
    send_keys(Keys.F1) 键盘F1
    send_keys(Keys.F5) 键盘F5
    send_keys(Keys.F12) 键盘F12

    八、鼠标操作

    操作都包含在ActionChains 类中,所以要模拟鼠标操作是首先要导入ActionChains。
    在使用鼠标操作前需要先导入ActionChains类包:
    from selenium.webdriver.common.action_chains import ActionChains

    1. click( ele ) 鼠标左键单击
    2. context_click( ele ) 鼠标右键单击
    3. double_click( ele ) 鼠标左键双击
    4. drag_and_drop( source,target ) 拖动到某个元素后松开
    5. move_to_element( ele ) 鼠标悬停在一个元素上
    6. click_and_hold( ele ) 鼠标左键单击,不松开
    7. release() 在某个元素上松开鼠标左键
    8. perform() 执行上述鼠标操作
      对ActionChains类进行实例化对象操作,调用操作(元素)方法,再执行操作perform方法

    相关文章

      网友评论

          本文标题:Web自动化总结

          本文链接:https://www.haomeiwen.com/subject/xeddrdtx.html