我正在使用watir和无头浏览器。我需要执行三个步骤添加位置,添加车辆和从另一个网站获取产品,我想从另一个网站的信息。我从我的服务器提交这三个细节,并在watir和headless的帮助下在一个HTTP请求中执行所有这三个步骤。
我只想在我的服务器上将一个http请求分解为三个http请求。该请求将是: 1)add_location:触发一个http请求,它将打开headless browser并选择位置。
2)add_vehicle:触发一个http请求,它将重用添加了位置的无头浏览器,我们将选择车辆。
3)获取产品:触发一个http请求,该请求将重用添加了location和vehcile的无头浏览器来获取产品列表。
我没有任何办法重用watir和无头会话,它已经在rails端的下一个http请求中打开了。
代码示例:
class TestsController < ApplicationController
def add_location
@headless = Headless.new
@headless.start
@watir = Watir::Browser.new
@watir.goto('www.google.com')
@watir.text_field(id: 'findstore-input')
.wait_until(&:present?).set(params[:zip_code])
@watir.a(id: 'findstore-button').click
@watir.div(class: 'notifier').wait_while(&:present?)
end
def add_vehicle
#need to resuse above @watir object in this action
end
end
发布于 2019-06-11 03:17:46
您可以使用钩子文件,以无头模式启动浏览器,并在单独的def中指定要调用的变量,以将url传递给浏览器。
例如:
在钩子中,您可以按如下方式添加它
@browser = Watir::Browser.new :chrome,选项:{args:'--headless'}
因此,您可以在一个def中重用@browser.goto('www.google.com'),也可以在其他调用中使用相同的实例。
def example1:@browser.goto('www.google.com')结束
def example2:@browser.goto('www.facebook.com')结束。。。等
希望这能有所帮助。
https://stackoverflow.com/questions/56459652
复制相似问题