51Testing软件测试论坛

标题: [WebDriver]关于cssSelector定位没有id和name的iframe里的元素。 [打印本页]

作者: gac_51test    时间: 2013-10-10 15:34
标题: [WebDriver]关于cssSelector定位没有id和name的iframe里的元素。
小弟在使用webdriver的过程中遇到一个问题。在页面上点击“登录”按钮后,弹出一个iframe窗口,用户输入后可登录,但是该iframe既没有ID也没有name,所以想用cssSelector来定位。现在想定位到输入邮箱的输入框里,但是一直报Unable to locate element,估计cssSelector写的问题求帮助,代码如下。谢谢。


  1. <div class="blockUI blockMsg blockPage" style="z-index: 20001; position: fixed; padding: 0px; margin: -160px 0px 0px -246px; top: 50%; left: 50%; text-align: left; color: rgb(0, 0, 0); cursor: pointer; width: 493px; height: 320px;">
  2. <div style="width:493px; height:320px;">
  3. <div id="close" style="position: absolute; right:16px; height:16px; width:16px; top:19px;"></div>
  4. <iframe width="493px" scrolling="no" height="320px" frameborder="0" src="http://passport.xxx.com/get_pop?hash=&referer=http://bj.xxx.com/">
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <body>
  9. <div class="login_box">
  10. <div class="login_box_con_back"></div>
  11. <div class="login_box_con">
  12. <div class="login_box_bottom">
  13. <div class="login_top">
  14. <a class="close" title="关闭"></a>
  15. <img src="/static/images/login_title.png">
  16. </div>
  17. <form autocomplete="off" action="/login2" method="post">
  18. <div class="login_txt">
  19. <div class="login_left">
  20. <div class="w_log_1">
  21. <div class="loginFormIpt-1 item-input">
  22. <input id="email" class="loginFormTdIpt" type="text" title="请输入邮箱" name="email" maxlength="50" value="">
  23. <label class="placeholder" style="" for="email">邮箱/手机号</label>
  24. <label class="txt_no" style="display:none" for="email">用户不存在,或者被删除</label>
  25. <label class="txt_no" style="display:none" for="email">对不起,此用户被屏蔽</label>
  26. </div>
  27. <div class="loginFormIpt-2 item-input">
  28. <input id="password" class="loginFormTdIpt" type="password" autocomplete="off" title="请输入密码" name="password">
  29. <label class="placeholder" style="" for="password">密码</label>
  30. <label class="txt_no" style="display:none" for="password">您输入的密码不正确</label>
  31. </div>
  32. </div>
  33. <div class="loginFormCheck">
  34. <div class="loginFormIpt">
  35. <button id="loginBtn" class="btn btn-login" tabindex="6" type="submit">登 录</button>
  36. <a href="/locate_password" target="_blank" title="找回密码">忘记密码?</a>
  37. </div>
  38. <div class="x-ts">
  39. <div class="l-tips" style="display:none">
  40. </div>
  41. </div>
  42. <div class="login_right">
  43. <h2>注册</h2>
  44. <div class="loginFormVer">
  45. <div class="login-ico-arr">
复制代码

作者: joykao    时间: 2013-10-10 16:56
你自己的测试代码呢?应该是你自己测试代码里的cssSelector的value搞错了吧。。。当然也可以试试用xpath去定位元素。。。。
作者: 六月天    时间: 2013-10-10 17:08
这太简单了,用By.tagName("iframe")不就行了。。。。
作者: gac_51test    时间: 2013-10-10 17:22
回复 3# 六月天


不行啊,页面上有好几个没有name和ID的iframe,有2个的时候还可以用dr.switchTo().frame(1),多个就不知道要选中的iframe的index了。
作者: gac_51test    时间: 2013-10-10 17:23
回复 2# joykao


xpath没问题,可以定位到。dr.switchTo().frame(dr.findElement(By.xpath("//iframe[contains(@src,'http://passport.xxx.com')]")));
但是我想学学cssSelector怎么定位这个。
作者: 六月天    时间: 2013-10-10 17:40
有多个的话最简单就是xpath了。cssSelector不是所有元素都可以定位的,css选择器只有三种,标签选择器,类(class)选择器和id选择器,没有这几个就不推荐使用css选择器。
但xpath是没有限制的。
作者: joykao    时间: 2013-10-10 17:51
回复 5# gac_51test

这个主要看页面元素是怎么描述的。。。

http://www.w3.org/TR/CSS/#selectors
作者: zhangting85    时间: 2013-10-21 21:33
定位方式在原则上是哪个方便选哪个。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2