Watir-webdriver没有抓住指定的div,不知道为什么?
所以这是我试图使用的控制器的代码。Watir-webdriver没有抓住指定的div,不知道为什么?
class ScraperController < ApplicationController
def getinformation
require 'watir-webdriver'
require 'phantomjs'
@browser = Watir::Browser.new:phantomjs
@browser.goto "http://reddit.com"
@divs = @browser.divs(class: "title may-blank ")
end
end
在视图页面,我有<%= @ divs.length%>,它的输出0。当我键入<%= browser.title%视图页>它给了我“reddit的:在互联网的首页“,所以我知道我从网页上获得了一些东西。
通过检查主页上某些帖子的标题,我发现div类“标题可能为空”,并且我尝试过使用div类“标题可能为空”和“标题可能为空” 。最后一个空格,在reddit页面上进行检查时显示的内容,以及末尾没有空格的内容。两者都没有给我什么。
假设你正在试图找到:
<a class="title may-blank outbound" data-event-action="title" href="https://i.redd.it/kxtpiskh9mez.jpg" tabindex="1" data-href-url="https://i.redd.it/kxtpiskh9mez.jpg" data-outbound-url="https://out.reddit.com/t3_6si8wj?url=https%3A%2F%2Fi.redd.it%2Fkxtpiskh9mez.jpg&token=AQAAKQiLWXNK30ZkH9-TplVYPCVEIJwNWgqFZCdFuOc3O5l1c7M1&app_name=reddit.com" data-outbound-expiration="1502283817000" rel="">Fries</a>
的问题是该元素是a
而非div
。你至少需要做:
@browser.links(class: "title may-blank ")
虽然这会返回结果,但它可能不是你所期望的。在Watir中也支持在String
中支持多个类别。
我觉得你真的想只是:
@browser.links(class: "title")
如果你想两个类,使用方法:
@browser.links(class: ["title", "may-blank"])
非常感谢你! – ChrisWilson
我试图通过Watir文档之前试图解决我的问题,然后发布在stackoverflow上,但似乎无法找到我的答案。难道我只需要看起来更难,或者你知道Watir有一个很好的教程吗? – ChrisWilson
你可以试试我的书,[Watirways](https://leanpub.com/watirways/read#leanpub-auto-locating-an-element---basics)。这只是部分写的,有点过时,但这是一个起点。 –
您应该切换到 “的Watir” 而不是 “的Watir-的webdriver”。 Watir-Webdriver代码库已被弃用。这是更新现在在Watir发生。 –
感谢您的建议!会做。 – ChrisWilson