Ruby/Selenium Access Yahoo Finance报价查找场
我正在尝试使用Ruby和Selenium从Yahoo Finance网站上搜索信息。
我需要在页面上找到报价查找输入字段,并将其发送一些值,例如TWTR,以打开有关Twitter Company的信息。
这是我拥有的,但是我会收到错误:
代码:
require 'selenium-webdriver'
require 'byebug'
target_asset = 'TWTR'
url = 'https://finance.yahoo.com/'
driver = Selenium::WebDriver.for :chrome
begin
driver.get url
sleep rand(2..4)
input_element = driver.find_element(class: 'D(ib) Pstart(10px) Bxz(bb) Bgc($lv3BgColor) W(100%) H(32px) Lh(32px) Bdrs(0) Bxsh(n) Fz(s) Bg(n) Bd O(n):f O(n):h Bdc($seperatorColor) Bdc($linkColor):f finsrch-inpt').send_keys target_asset, :return
ensure
driver.quit
end
但这是我收到的错误:
目标帧独立(Selenium :: WebDriver :: error :: WebDrivererror)
(会话信息:Chrome = 100.0.0.4896.127)
I am trying to scrape information from Yahoo Finance website using Ruby and Selenium.
I need to locate Quote Lookup input field on the page and send it some value, like TWTR, to open/access information about Twitter company, for example.
This is what I have, but I receive error:
Code:
require 'selenium-webdriver'
require 'byebug'
target_asset = 'TWTR'
url = 'https://finance.yahoo.com/'
driver = Selenium::WebDriver.for :chrome
begin
driver.get url
sleep rand(2..4)
input_element = driver.find_element(class: 'D(ib) Pstart(10px) Bxz(bb) Bgc($lv3BgColor) W(100%) H(32px) Lh(32px) Bdrs(0) Bxsh(n) Fz(s) Bg(n) Bd O(n):f O(n):h Bdc($seperatorColor) Bdc($linkColor):f finsrch-inpt').send_keys target_asset, :return
ensure
driver.quit
end
But this is the error I get:
target frame detached (Selenium::WebDriver::Error::WebDriverError)
(Session info: chrome=100.0.4896.127)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须形成更好的定位器,对我有以下定位器对我有用。尝试一下。您不需要任何睡眠声明,因为程序会自动等待页面加载。如果您仍然想使用等待,则可以等待隐式等待或明确等待。
编写以下代码,它可以正常工作。
You must form the better locator, It works for me with the following locator. Try it out. You don't need any sleep statement because program automatically waits for page load. If you still want to use wait, you could wait implicit wait or explicit wait.
Write the following code, it works fine.