html - Groovy Geb 无法捕获下拉列表

标签 html drop-down-menu groovy webdriver geb

@Grapes([
    @Grab("org.codehaus.geb:geb-core:0.7.2"),
    @Grab("org.seleniumhq.selenium:selenium-firefox-driver:2.25.0"),
    @Grab("org.seleniumhq.selenium:selenium-support:2.25.0")
])
import geb.Browser
import org.openqa.selenium.firefox.FirefoxDriver

Browser.drive {

  go "http://www.asu.edu/"
  $("li a").each { a ->
     println(a.text())
  }

}

我正在尝试使用 Geb 框架从网页中获取所有链接(由 a 标记表示)。但我未能在下拉列表中捕获这些链接。拿this page例如,我无法捕获Colleges & SchoolsMap & Locations下的下拉列表。在上面代码的输出中,下拉列表中的每一项都是占据一行的“空字符串”。输出的开始部分如下:

SIGN IN
ASU Home
My ASU
Colleges & Schools















Map & Locations











Contact ASU
Freshman
Transfer
Graduate
International
Military | Veteran
Home-Educated
Online
Prospective Students

最佳答案

这是因为您只能获取可见元素的文本。这样 text() 只返回用户可见的文本。

看起来该下拉菜单的样式是在应用 :hover 伪类时打开。有drag and drop support in GebmoveToElement action您可以使用将光标指向该元素,但它似乎不起作用 - 我发现一些线程表明 Firefox 驱动程序不能很好地处理它。不幸的是,目前无法使用 jQuery 模拟 :hover,因此您唯一的选择是使用 Geb's jQuery integration手动使元素可见:

$('#asu_universal_nav li', 2).find('ul').jquery.show()

之后,调用 text() 时应返回链接中的文本。另一种选择是使下拉列表不仅在 :hover 时可见,而且在应用类并在 mouseenter/mouseleave 处理程序中添加/删除该类时也可见。但这只有在您可以修改为您自动化/测试的页面提供服务的应用程序时才可能实现。

关于html - Groovy Geb 无法捕获下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898973/

相关文章:

html - 如何调整水平规则元素的宽度

php - 具有多个年份间隔的 Mysql 查询

asp.net-mvc-3 - 可重用的编辑器模板,带有用于业务对象的 DropDownList

groovy - 从字符串闭包

html - 菜单项悬停在 <section> 边框内;

javascript - 在 if 语句中选择

grails - HQL 加入 Grails

list - groovy 中的 [c 类

javascript - 在 href 中调用 Ajax 请求函数

javascript - 如果值在 JQuery 中匹配,则手动选择多个下拉选项