selenium webdriver定位不到元素的五种原因及解决办法

上一篇 / 下一篇  2012-12-21 10:42:53 / 个人分类:Selenium

1.动态id定位不到元素
$G2T5j7Z&Ba"|0for example:51Testing软件测试网"Z L Au tp!o XV
        //WebElement xiexin_element = driver.findElement(By.id("_mail_component_82_82"));51Testing软件测试网/H0GZ H-L#[
        WebElement xiexin_element = driver.findElement(By.xpath("//span[contains(.,'写 信')]"));51Testing软件测试网]^{#K$I ]"~5V
        xiexin_element.click();
T%fvDJQ)`y051Testing软件测试网ilxt%r7Q
   上面一段代码注释掉的部分为通过id定位element的,但是此id“_mail_component_82_82”后面的数字会随着你每次登陆而变化,此时就无法通过id准确定位到element。51Testing软件测试网Jd ?qg x
   所以推荐使用xpath的相对路径方法查找到该元素。51Testing软件测试网aa#TD6T$Lg@N

:p N#`VSb02.iframe原因定位不到元素51Testing软件测试网0sP&gDm(a&Jy~-mf

*k9E^SoQ a0    由于需要定位的元素在某一个frame里边,所以有时通过单独的id/name/xpath还是定位不到此元素
Iz i0]9?9U&v0比如以下一段xml源文件:
D5L1^!L4D,f-^ d0<iframe id="left_frame" scrolling="auto" frameborder="0" src="index.php?m=Index&a=Menu" name="left_frame" noresize="noresize" style="height: 100%;visibility: inherit; width: 100%;z-index: 1">
51Testing软件测试网ASp8|cQ-_
4. xpath描述错误51Testing软件测试网'YHe-t4FB6|2JU5I
这个是因为在描述路径的时候没有按照xpath的规则来写 造成找不到元素的情况出现51Testing软件测试网!@px%[MtPH/rOm

&}a|/Wd05.点击速度过快 页面没有加载出来就需要点击页面上的元素51Testing软件测试网q6J"?9o$M)d"LpG'l#r
这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来实现51Testing软件测试网-wCq y1J,Jk,B5v
例如:51Testing软件测试网%[@P"J r KuL
       //用WebDriverWait和until实现显示等待 等待欢迎页的图片出现再进行其他操作
K@y:b(`zVc0       WebDriverWait wait = (new WebDriverWait(driver,10));51Testing软件测试网 LJ#q7T }PaiJ
       wait.until(new ExpectedCondition<Boolean>(){51Testing软件测试网&]c8f `yg
           public Boolean apply(WebDriver d){
4A n.ZX?c ~0               boolean loadcomplete = d.switchTo().frame("right_frame").findElement(By.xpath("//center/div[@class='welco']/img")).isDisplayed();
!n*E%f7AG1z.i0               return loadcomplete;51Testing软件测试网0^n$?3Vi0X5P
           }
1Kn [,Bd}#O5r2{0       });51Testing软件测试网 D3\+U-F)SM
也可以自己预估时间通过Thread.sleep(5000);//等待5秒 这个是强制线程休息
XgVwEz+r1e/Ud0
^^E%~fL%{06.firefox安全性强,不允许跨域调用出现报错
#TS$C\f5[jv0错误描述:uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location:51Testing软件测试网 K \Y(aH
51Testing软件测试网 T`cq4`m(sG
解决办法:
|(Z!uM\@0这是因为firefox安全性强,不允许跨域调用。 51Testing软件测试网v2t%zS7o9GWD]
Firefox 要取消XMLHttpRequest的跨域限制的话,第一
YsW5iD#Pp({ e%@0是从 about:config 里设置 signed.applets.codebase_principal_support = true; (地址栏输入about:config 即可进行firefox设置)
^-P*O Clk0第二就是在open的代码函数前加入类似如下的代码: try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { alert("Permission UniversalBrowserRead denied."); }
An Vgp{+R-u]J0

TAG:

引用 删除 18201153313   /   2016-09-02 10:08:19
赞一个,很棒
引用 删除 18201153313   /   2016-09-02 10:08:19
赞一个,很棒
引用 删除 18201153313   /   2016-09-02 10:08:18
赞一个,很棒
引用 删除 18201153313   /   2016-09-02 10:08:18
赞一个,很棒
引用 删除 18201153313   /   2016-09-02 10:08:17
赞一个,很棒
引用 删除 18201153313   /   2016-09-02 10:08:15
赞一个,很棒
chenmo604的个人空间 引用 删除 chenmo604   /   2013-11-06 18:37:09
victory:
引用 删除 mhuang   /   2013-07-19 17:17:22
5
Mr.南柯 引用 删除 bob123654   /   2012-12-21 13:17:17
原帖由hebxtgsl于2012-12-21 13:14:01发表
顶一个
hebxtgsl的个人空间 引用 删除 hebxtgsl   /   2012-12-21 13:14:08
1
hebxtgsl的个人空间 引用 删除 hebxtgsl   /   2012-12-21 13:14:01
顶一个
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar