51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9540|回复: 6
打印 上一主题 下一主题

【已解决】求助,请看看这个DIV层下的元素selenium-webdriver如何获取?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-10-10 10:44:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 vipwork 于 2012-10-11 16:54 编辑

请大家帮忙看看用什么定位器可以获取到红框内的<a>元素。这个是一个第三级菜单来的,请看图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2012-10-11 16:40:37 | 只看该作者
问题解决了。解决的方法如下:
  1. WebElement menu3 = driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='流程']"));
  2.                 actions.moveToElement(menu3);
  3.                 actions.perform();
复制代码
当另一个问题又出现了,这个movetoelement方法非常不好用,貌似作用只是模拟鼠标滑过这个链接而已,并不能达到mouseover的效果,即鼠标停放在这个链接上的效果
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-10-11 16:53:23 | 只看该作者
经过两天不懈的努力,终于找到方法了。看来还是api看得太少啊。用下面代码可以模拟鼠标停放在链接上的效果。
  1. WebElement menu1 = driver.findElement(By.xpath("//a[@class='white' and text()='一级菜单']"));
  2.                 //actions.moveToElement(menu1);
  3.                 actions.clickAndHold(menu1);
  4.                 actions.perform();       
  5.                 WebElement menu2 = driver.findElement(By.xpath("//a[text()='二级菜单']"));
  6.                 //actions.moveToElement(menu2);
  7.                 actions.clickAndHold(menu2);
  8.                 actions.perform();
  9.                 Thread.sleep(1000);
  10.                 driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='三级菜单']")).findElement(By.xpath("..")).click();
  11.                 driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='三级菜单']")).click();
  12.                
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-10-12 10:29:56 | 只看该作者
再次回来说明一下,3楼贴的解决方法是有缺陷的。不过这个是selenium2与IE的兼容性问题。简答来说,当使用InternetExplorerDriver时,使用上面方法时,鼠标指针不能放在浏览器内,否则,将造成最后一步:
  1. driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='三级菜单']")).click();
复制代码
click第三级菜单抛异常:ElementIsNotVisibalException

具体可以参考下面贴中jim evans的回答:
https://groups.google.com/forum/ ... bdriver/WeuSwYemM4E

所以,在回放脚本使,鼠标指针最好停放在任务栏上,不过如果你不是用IE而是用FIREFOX的话,倒不用担心这个问题。其实说到底就是selenium2限制了fireeven的方法,实在是相当的不方便。另外,可以在selenium2中使用selenium1的方法:
  1. ISelenium selenium = new WebDriverBackedSelenium(driver, baseURL);
  2. selenium.Start();
  3. selenium.MouseOver(xpathA);
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2013-1-6 23:51:42 | 只看该作者
不错
回复 支持 反对

使用道具 举报

  • TA的每日心情
    擦汗
    2017-4-28 09:37
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]测试连长

    6#
    发表于 2016-5-24 10:01:47 | 只看该作者
    用select 啥
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-4-28 09:37
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]测试连长

    7#
    发表于 2016-5-24 10:06:00 | 只看该作者
    Select select =new Select(driver.findElement(By.id("***")));
    select.selectByVisibleText("流程");

    你试试这种方式
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 04:03 , Processed in 0.074036 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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