- 的Ruby 1.8.7
- 硒的webdriver 2
- 的Ubuntu 12.04桌面
- 火狐13.0.1
问题:
我有div标签被用作选择。你点击div,下拉式窗口显示更多的div标签作为选择选项。现在我可以进入并创建一种方法来单击每个'div as select'的每个选项,但是我真正喜欢的是编写一段代码,点击我所知道的div,然后确定哪些div现在显示并在点击后启用。然后我可以随意点击其中的一个选项。
所以我当前的代码是这样的:
allDivs = brwsr.find_elements(:tag_name, 'div')
origDivs = allDivs
allDivs.each do |e|
if ... # Get the div I want
e.click
newDivs = brwsr.find_elements(:tag_name, 'div')
origDivs.each do |orig|
newDivs.delete(orig)
end
# Do something with remaining new divs here
end
end
我的主要问题是,这是非常缓慢的。我目前有大约200个div来旋转,这种方法需要几分钟才能完成。通常情况下,我不希望旋转几百个数组元素花费很长时间。但它确实如此。
缩短我尝试过滤allDivs和newDivs的时间,方法是旋转它们一次并删除任何未显示和启用的内容。
所以我目前坚持一个非常缓慢的解决方案。我不介意这个'发现新的div'有点慢,因为它也会导致脚本开发时间更短。然而,花几分钟时间完成太长。
第一个问题: Selenium是否只返回在find_elements调用周围显示并启用了一些额外API字符串的元素?
第二个问题:有没有人有更好的方法来找到新的div元素,而不必通过元素数组。