新房网站建设,软件项目管理平台,广州市海珠区最新官方消息,iis7配置网站404页面selenium中元素定位正确但是操作失败的原因无外乎以下4种#xff1a;
01 页面没加载好
解决方法#xff1a;添加等待方法#xff0c;如#xff1a;time.sleep()
02 页面提交需要等待给数据后台
解决方法#xff1a;添加等待方法#xff0c;如#xff1a;time.sleep(…selenium中元素定位正确但是操作失败的原因无外乎以下4种
01 页面没加载好
解决方法添加等待方法如time.sleep()
02 页面提交需要等待给数据后台
解决方法添加等待方法如time.sleep()
03 浏览器没有以最大化方式打开导致元素被隐藏定位不到
解决方法
将网页最大化driver.maximize_window()
如果屏幕比例固定分辨率有限通过网页最大化也没办法解决的话可以通过执行JS方法来实现。
browser.execute_script(window.scrollBy(200,0)) #此处(200,0)为网页偏移坐标200为横坐标0为纵坐标
#window.scrollBy()为JS方法#
04 网页中存在多个frame框架所定位的元素不在当前frame中
网页中存在多个frame框架所定位的元素不在当前frame中。所以尽管元素明明看起来是定位正确的但是点击无效。
对于嵌套多个frame的页面操作时需要层层跳转跳到元素所在的frame。
frame标签有frameset、frame、iframe三种frameset与其他普通标签一样不会影响元素的定位而frame与iframe的切换方法是一样的。
解决方法可以利用selenium中的switch_to.frame()方法来实现frame之间的跳转。
具体操作如下
1.如何对frame进行切换
利用switch_to.frame()方法来进行切换。
switch_to.frame(reference)
reference是传入的参数用来定位frame可以是idnametag name等。假设有下面HTML代码
html
head titleFrameTest/title
/head
body
iframe srcmyframe.html idframe1 namemyframe/iframe
/body
/html
则想要切换到上述iframe的方法有
driver.switch_to.frame(0) #用frame的index定位第一个是0
driver.switch_to.frame(frame1) #用frame的id来定位
driver.switch_to.frame(myframe) #用name来定位
driver.switch_to.frame(driver.find_element_by_tag_name(iframe)) #用iframe对应的tag name来定位
driver.switch_to_frame(driver.find_element_by_xpath(//iframe[contains(src,myframe)])) #利用xpath来定位
2.如何从子frame切换回主文档
切换到子frame后就无法再对主文档元素进行操作了所以要切换回主文档。方法为driver.switch_to.default_content()
driver.switch_to.default_content()
3.多层frame如何切换
如果有多层frame要逐层进行切换例如下列多个frame嵌套的HTML代码
html iframe idframe1 iframe idframe2 / /iframe
/html
1从主文档切换到frame 2
driver.switch_to.frame(frame1) #先从主文档切换到frame1
driver.switch_to.frame(frame2) #再从frame1切换到frame2
2从frame2切回到frame1
从frame2再切回frame1这里selenium给我们提供了一个方法能够从子frame切回到父frame而不用我们切回主文档再切进来。
driver.switch_to.parent_frame() # 如果当前已是主文档则无效果
有了parent_frame()这个相当于后退的方法我们可以随意切换不同的frame随意的跳来跳去了。
总结下遇到frame跳转问题利用以下三个方法便可以搞定
driver.switch_to.frame(reference)
driver.switch_to.parent_frame()
driver.switch_to.default_content()
05 元素属性为动态属性看着定位已经正确但是随着鼠标点击位置不同元素的属性发生变化。
解决方法换元素的另一个固定属性来进行定位。
页面元素在页面打开的时候被其他弹出窗口挡住。
解决方法添加关闭弹出窗口步骤。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你