关于web自动化定位元素失败的分析

匿名 (未验证) 提交于 2019-12-03 00:05:01

问题分析

  1. 首先-明确范围 -- web自动化测试

  2. 其次-明确条件 -- 元素定位都正确

  3. 然后-明确现象 -- 元素定位会失败

  4. 最后-得出结论

    1. 判断定位的元素属性信息是否正确(已经确定正确),但是业务逻辑是否正确需要确定

    2. 受到网络/服务器/浏览器影响,页面加载过慢会造成定位失败,需要通过元素等待处理

    3. 目标元素是否直接可见/是否需要鼠标动作才能显现出来

    4. 默认浏览器大小的页面加载范围过小造成部分元素遮挡,需要启动浏览器后最大化窗口

    5. 受前端动态加载技术影响,页面动态加载数据有时需要监听滚动条动作(长页面翻页),需要操作滚动条

    6. 页面操作过程中的窗口弹框alert也会影响页面定位和操作,需要先处理alert

    7. 页面部分超链接点击后会在新窗口中打开,目标元素在新窗口中时,需要进行窗口切换

    8. 收到前端页面框架影响,页面内容可能会在frame子页中,需要frame切换

 

 

问题总结

由于这个问题回答清楚需要很多Selenium的API常用操作,所以针对这个问题的回答要特别注意代码实现

  1. 业务逻辑

  1. 元素等待

  1. 鼠标动作

    # 实例化一个动作链对象# 动作链对象调用动作方法--move_to_element(目标元素对象)# 动作链对象调用perfom()ActionChains(driver).move_to_element(driver.find_element_by_class_name("u-g-cart")).perform()
  1. 最大化窗口

    # 1.打开浏览器# 实例化浏览器驱动对象# obj = 类名()driver = webdriver.Chrome()# 浏览器窗口最大化driver.maximize_window()
  1. 操作滚动条

    # 操作滚动条driver.execute_script("window.scrollTo(0,100000)")# 点击回到顶部driver.find_element_by_class_name("ico-slidebar4").click()
  1. 处理alert

    # 关闭弹出框driver.switch_to.alert.dismiss()
  1. 窗口切换

    # 切换窗口 -- 一般规律默认最后一个就是新窗口句柄driver.switch_to.window(driver.window_handles[-1])
  1. frame切换

    # frame切换  主页--子页driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))# 点击去购物车结算driver.find_element_by_link_text("去购物车结算").click()# frame切换  子页--主页driver.switch_to.default_content()

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!