51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9711|回复: 7
打印 上一主题 下一主题

Selenium2 WebDriver 定位不到div模拟的 弹出对话框?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-10-10 17:29:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 olaygood 于 2014-10-10 17:30 编辑

弹出框是div模拟的    提前谢谢大神
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2020-8-2 21:08
  • 签到天数: 817 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2014-10-11 20:22:28 | 只看该作者
    有兴趣的话看看我的共享的相关资料吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-1-8 17:51
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    3#
    发表于 2014-10-28 14:27:35 | 只看该作者
    问下楼主解决了吗?我也碰到这方面的问题了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-23 16:54
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2014-12-12 17:56:02 | 只看该作者
    不知道你的具体问题,给你全部的定位方法,你自己看看吧,css和XPath应该可以。


    (1)验证页面元素:
    verifyTextPresent:
    验证页面是否有特定文本,不关心其所在位置;

    verifyText:
    验证页面的某个位置(Target),是否存在某特定文本;(选择XPath、DOM)

    verifyElementPresent:
    测试特定UI元素是否存在某位置,不关心其内容;仅检查HTML tag;


    (2)定位页面元素:
    locatorType=location,locatorType可以省略;
    定位器以document开始,使用DOM定位策略;
    定位器以//开始,使用XPath定位策略;
    定位器没有以locatorType开头,默认使用identifier定位策略;

    identifier定位:
    默认为identifier定位,识别第一个使用指定id的页面元素,若没有,则识别第一个名字与指定条件相符的元素;

    id定位:
    比identifier定位范围更窄,更具体,需要知道元素的id特征;

    name定位:
    识别第一个匹配名称属性的UI元素,如果同名,使用过滤器(默认Value);

    --!!!以上3种定位器使selenium不需要依赖UI元素在页面上的位置来进行测试。

    XPath定位:
    在XML文档中定位元素,扩展了id和name定位,比如定位页面上的第3个多选框;
    用相对于有id和name的元素的相对地址来定位较好,绝对XPath包含从root(/html)开始的路径,不利于复用;
    XPath定位以“//”开始,xpath的标签并非是必需的;
    例如://form[@id='loginForm']/input[4][7]——id为‘loginForm’的form,定位它的第4个input元素。
    在FireFox中添加XPath Checker、FireBug附加组件;

    通过链接文字定位超链接Link:
    例如:link=Continue(4)——定位页面元素连接文字为Continue。

    DOM定位:
    document object model使用JavaScript评估元素,用分级符号来简化元素定位;
    只有dom定位以document开始,所以“dom=”标签不是必需的;
    例如:
    dom=document.getElementById('loginForm')(3)——定位页面元素form;
    dom=document.forms[0](3)——定位页面元素form;
    document.forms[0].elements[3](7)——定位continue,它是form的第三个元素;

    CSS定位:
    cascading style sheet表现HTML和XML,使用选择器来为页面元素绑定式样属性,可被selenium用作定位策略;
    例如:
    css=form#loginForm(3)——定位页面元素form;
    css=input[name='username'](4)——定位页面元素username;
    css=#loginForm input[type="button"](4)——定位页面元素,类型为button;
    css=#loginForm input:nth-child(2)(5)——定位页面元素,且它的form第二个input子元素;
    http://www.w3.org/TR/css3-selectors/


    (3)文字范本匹配
    patterns也是经常被selense命令使用的参数,需要范本的命令包括verifyTextPrstesent,verifyTitle,assertConfirmation,verifyText,verifyPrompt,链接定位器,允许使用特殊字符来描述期望值,有3种类型的范本:globbing、regular expression、Exact。

    globbing范本:
    在dos或linux系统中作为文件名通配符(*.c),在selenium中,只支持2种特殊符号:
    * ——匹配任何东西;
    []——(字符集)匹配任何方括号内的字符,连接符可以被用来缩短穷举字符(ASCII内连续);
    例如:
    [aeiou]——匹配任何小写元音字母;
    [0-9]  ——匹配任何数字;
    [a-zA-z0-9]——匹配任何字母和数字;
    在selenese命令中使用globbing范本,可以加“glob:”前缀,不加也行,因为glob是默认范本;
    例如:
    Click                link=glob:Film*Television Department
    VerifyTitle        glob:*Film*Television*

    regular expressions范本(正则表达式):
    功能最强大的,被多种高级语言支持;
    例如:
    要确保特定表格单元中仅包含有数字,regexp:[0-9]+ ——是一个简单范本,可以匹配任何长度的十进制数。
    支持JavaScript的所有特殊字符;如下:
    .        任何字符                        -anyAll
    []        字符集,匹配括号中的任何字符        -charClass       
    *        0个或更多之前描述的字符或字符串        -quantifier        (.*表示0个或多个任意字符)
    +        0个或更多之前描述的字符或字符串        -quantifier
    ?        0个或1个之前描述的字符或字符串        -quantifier
    {1,5}        1个或者5个之前描述的字符或字符串-quantifier
    |        左边或右边的字符或字符串        -alternation
    ()        一个整体,与上述结合使用                -grouping
    在selenese中,regular expression范本需要加上“regexp:”或者“regexpi:”前缀,后一种大小写不敏感;
    [a-g]+          :表示没有或者有a-z的字符;
    [0-6]?                :表示没有或者有1个0-6的数字;
    [0-9]|[a-d]        :表示左边是数字,右边是字母;
    [已未]完成        :表示已完成或者未完成;

    例如:
    通配——
    click                link=regexp:Film.*Television Department (与glob的*效果一样)
    veriyTitle        regexp:.*Film.*Television.*
    复杂的——
    open                        http://weather.yahoo.com/forecast/USAK0012.html
    verifyTextPresent        regexp:Sunrise: *[0-9]{1,2}:[0-9]{2} [ap]m
    说明:
    Sunrise: *        Sunrise后跟着0个或多个空格;
    [0-9]{1,2}        1个或者2个0-9的数字(小时);
    :                字符:
    [0-9]{2}        2个0-9的数字跟着一个空格;
    [ap]m                a或者p跟着m;


    Exact范本:
    很少被使用,完全不使用特殊字符,所以如果需要找到真实的星号字符,就可以使用它了;
    例如:
    在下拉框选择“Real *”,应该使用“exact:”前缀创建范本,exact:Real * 即可;
    select                //select        exact:Real * (regexp:Real \* --转义后也一样)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2015-7-21 11:50:11 | 只看该作者
    问下楼主解决了吗?我也碰到这方面的问题了,求教。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2015-8-27 16:20:50 | 只看该作者
    应该是在不同的frame中了,driver.switchTo().frame(name或id),然后再定位试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2015-8-27 16:21:04 | 只看该作者
    应该是在不同的frame中了,driver.switchTo().frame(name或id),然后再定位试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2015-8-27 16:22:05 | 只看该作者
    axue12 发表于 2014-10-28 14:27
    问下楼主解决了吗?我也碰到这方面的问题了

    注意是不是在不同的frame中
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-14 16:36 , Processed in 0.072711 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表