C# Selenium-疑难杂症

C# Selenium-疑难杂症

发现网络上的C#Selenium文章好少,讲问题的就更少了。这个文章主要纪录一些疑难杂症和一些解决办法。本文中所用的是wedDriver 也就是Selenium2

1.StaleElementReferenceException(元素过期异常)

样子下下图;

这里写图片描述

在查找元素后,返回了元素对象的引用,但对象里是一堆异常。这里不会报错,只有调试才能看到,属于一个暗坑呀。。

解决办法:在查找元素前加一个延迟。比如点击后,要获取提示信息。那么应该在点击后延迟一点时间,给页面时间来反应。

2.stale element reference: element is not attached to the page document(过时元素引用:元素未附加到页面文档)

错误如下图:

这里写图片描述

这个错通常出现在找到页面元素,当页面元素变化后没有更新导致的。至于为什么会这样,我推测是元素依附的那个HTML文档是以前的,当没有重新获取,元素对象在新的页面中就消失了,所以会提示找不到了。

解决办法:重新用FindElement()方法找一次

3.no such element: Unable to locate element(没有这样的元素:无法定位元素)

错误下如图:
这里写图片描述
这里写图片描述

元素存在HTML中,但是代码中却报错。这会在页面上是处于隐藏的,当然不能找到拉!
还有一种是路径没有写对。虽然有多种方式,但我不太喜欢用Xpath来定位。Xpath是绝对路径,但我们平时要测试的网页大部分是变化的,那Xpath就需要老修改,不太方便。PS:这里说的变化是开发中修改网页、或是网页更新(百度首页也不可能几年都不变呀)。当HTML被加载后,只要不刷新或是DIV中没有发生网页填充,这时的HTML文档结构是短暂不变的

解决办法:
1.如果确认路径没有错的情况下,一点要模拟鼠标去写代码。比如这里,账户登录不点击的话,忘记密码是不会显示的,就定位不到了。
2.如果是路径的问题,尽量用唯一的去定位。比如连接中的文字(LinkText)、ID这些

未完待续

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值