gac_51test 发表于 2013-10-10 15:34:00

[WebDriver]关于cssSelector定位没有id和name的iframe里的元素。

小弟在使用webdriver的过程中遇到一个问题。在页面上点击“登录”按钮后,弹出一个iframe窗口,用户输入后可登录,但是该iframe既没有ID也没有name,所以想用cssSelector来定位。现在想定位到输入邮箱的输入框里,但是一直报Unable to locate element,估计cssSelector写的问题求帮助,代码如下。谢谢。


<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;">
<div style="width:493px; height:320px;">
<div id="close" style="position: absolute; right:16px; height:16px; width:16px; top:19px;"></div>
<iframe width="493px" scrolling="no" height="320px" frameborder="0" src="http://passport.xxx.com/get_pop?hash=&referer=http://bj.xxx.com/">
<!DOCTYPE html>
<html>
<head>
<body>
<div class="login_box">
<div class="login_box_con_back"></div>
<div class="login_box_con">
<div class="login_box_bottom">
<div class="login_top">
<a class="close" title="关闭"></a>
<img src="/static/images/login_title.png">
</div>
<form autocomplete="off" action="/login2" method="post">
<div class="login_txt">
<div class="login_left">
<div class="w_log_1">
<div class="loginFormIpt-1 item-input">
<input id="email" class="loginFormTdIpt" type="text" title="请输入邮箱" name="email" maxlength="50" value="">
<label class="placeholder" style="" for="email">邮箱/手机号</label>
<label class="txt_no" style="display:none" for="email">用户不存在,或者被删除</label>
<label class="txt_no" style="display:none" for="email">对不起,此用户被屏蔽</label>
</div>
<div class="loginFormIpt-2 item-input">
<input id="password" class="loginFormTdIpt" type="password" autocomplete="off" title="请输入密码" name="password">
<label class="placeholder" style="" for="password">密码</label>
<label class="txt_no" style="display:none" for="password">您输入的密码不正确</label>
</div>
</div>
<div class="loginFormCheck">
<div class="loginFormIpt">
<button id="loginBtn" class="btn btn-login" tabindex="6" type="submit">登 录</button>
<a href="/locate_password" target="_blank" title="找回密码">忘记密码?</a>
</div>
<div class="x-ts">
<div class="l-tips" style="display:none">
</div>
</div>
<div class="login_right">
<h2>注册</h2>
<div class="loginFormVer">
<div class="login-ico-arr">

joykao 发表于 2013-10-10 16:56:12

你自己的测试代码呢?应该是你自己测试代码里的cssSelector的value搞错了吧。。。当然也可以试试用xpath去定位元素。。。。

六月天 发表于 2013-10-10 17:08:19

这太简单了,用By.tagName("iframe")不就行了。。。。

gac_51test 发表于 2013-10-10 17:22:23

回复 3# 六月天


不行啊,页面上有好几个没有name和ID的iframe,有2个的时候还可以用dr.switchTo().frame(1),多个就不知道要选中的iframe的index了。

gac_51test 发表于 2013-10-10 17:23:49

回复 2# joykao


xpath没问题,可以定位到。dr.switchTo().frame(dr.findElement(By.xpath("//iframe")));
但是我想学学cssSelector怎么定位这个。

六月天 发表于 2013-10-10 17:40:32

有多个的话最简单就是xpath了。cssSelector不是所有元素都可以定位的,css选择器只有三种,标签选择器,类(class)选择器和id选择器,没有这几个就不推荐使用css选择器。
但xpath是没有限制的。

joykao 发表于 2013-10-10 17:51:35

回复 5# gac_51test

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

http://www.w3.org/TR/CSS/#selectors

zhangting85 发表于 2013-10-21 21:33:53

定位方式在原则上是哪个方便选哪个。
页: [1]
查看完整版本: [WebDriver]关于cssSelector定位没有id和name的iframe里的元素。