问题分析
-
首先-明确范围 -- web自动化测试
-
其次-明确条件 -- 元素定位都正确
-
然后-明确现象 -- 元素定位会失败
-
最后-得出结论
-
判断定位的元素属性信息是否正确(已经确定正确),但是业务逻辑是否正确需要确定
-
受到网络/服务器/浏览器影响,页面加载过慢会造成定位失败,需要通过元素等待处理
-
目标元素是否直接可见/是否需要鼠标动作才能显现出来
-
默认浏览器大小的页面加载范围过小造成部分元素遮挡,需要启动浏览器后最大化窗口
-
受前端动态加载技术影响,页面动态加载数据有时需要监听滚动条动作(长页面翻页),需要操作滚动条
-
页面操作过程中的窗口弹框alert也会影响页面定位和操作,需要先处理alert
-
页面部分超链接点击后会在新窗口中打开,目标元素在新窗口中时,需要进行窗口切换
-
收到前端页面框架影响,页面内容可能会在frame子页中,需要frame切换
-
问题总结
由于这个问题回答清楚需要很多Selenium的API常用操作,所以针对这个问题的回答要特别注意代码实现
-
业务逻辑
-
元素等待
-
鼠标动作
# 实例化一个动作链对象# 动作链对象调用动作方法--move_to_element(目标元素对象)# 动作链对象调用perfom()ActionChains(driver).move_to_element(driver.find_element_by_class_name("u-g-cart")).perform()
-
最大化窗口
# 1.打开浏览器# 实例化浏览器驱动对象# obj = 类名()driver = webdriver.Chrome()# 浏览器窗口最大化driver.maximize_window()
-
操作滚动条
# 操作滚动条driver.execute_script("window.scrollTo(0,100000)")# 点击回到顶部driver.find_element_by_class_name("ico-slidebar4").click()
-
处理alert
# 关闭弹出框driver.switch_to.alert.dismiss()
-
窗口切换
# 切换窗口 -- 一般规律默认最后一个就是新窗口句柄driver.switch_to.window(driver.window_handles[-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()
来源:博客园
作者:Ray(Mr.huang)
链接:https://www.cnblogs.com/ray-mr-huang/p/11518610.html