与Not able to click Button(element) on Selenium webdriver非常相似
该按钮在网页中定义为:
systemUseNotification (wait:true) { $("button", text:"OK") }
我使用Geb.我按如下方式定义了按钮:
waitFor(60) {systemUseNotification.click()}
并尝试点击按钮:
systemUseNotification << Keys.chord(Keys.ENTER))
代码能够找到按钮,但是click()从未工作过。我不得不使用奇怪的工作方式将ENTER键发送到按钮
templateTab(wait:true) { $("td" , text:"Templates")}
代码可以找到但不是点击的另一个控件由
定义waitFor
这是一个表单元格,可在您单击时更改视图。
再一次,在这个templateTab上调用click()没有做任何事情。这甚至是<td class="main-menu-item-text">Templates<td>
缠绕它,并验证代码找到了控件。
HTML中的实际定义是$(class:'main-menu-item-text', text:"Templates").click()
工作的内容是$("div", title:"Switch Dashboards").click()
但我真的不喜欢指定类名,因为它违背了具有抗更改测试代码的目的。
同样的问题我试图点击定义为
的div控制按钮我想打电话使用类似的东西:
class UserDecorator < SimpleDelegator
def full_name
"#{first_name} #{last_name}"
end
end
> @user = UserDecorator.new(User.new(first_name: 'John', last_name: 'Doe'))
> @user.full_name
=> "John Doe"
但这也不起作用。
请告诉我我做错了什么。
答案 0 :(得分:1)
我发现以下技术有效:
waitFor {$("td", class:contains("text"), text:"Templates").click()}
尽管如此,我仍然希望避免对该类有所了解,但至少这减少了我必须匹配的字符串的大小。
我试过了,例如class:contains(~/.*/)
和class:~/.*/
,所以我可以&#34;类不可知&#34;,但那些总是导致陈旧。