我正在执行rake任务,以便使用protractor运行测试。在我的任务上,我需要:
我的问题是我需要在运行我的测试之前运行Web服务器和Selenium。 这是我的佣金任务:
#1: run server
Thread.new { system("bundle exec rails s -p 3001 -e test") }
next until server_ready? "http://localhost:3001/index"
#2: run Selenium. I'm trying to execute this after web server is running
Thread.new { system("webdriver-manager start") }
next until server_ready? "http://localhost:4444/wd/hub/static/resource/hub.html"
#3: run tests. I'm trying to execute this after Selenium is running
system("protractor ../web/test/protractor.conf.js")
server_ready功能代码。使用此方法,我正在检查Web服务器和selenium是否已启动并正在运行
def self.server_ready? _url
begin
url = URI.parse(_url)
req = Net::HTTP.new(url.host, url.port)
res = req.request_head(url.path)
res.code == "200"
rescue Errno::ECONNREFUSED
false
end
end
我的问题不是关于Selenium或Protractor,我的问题是如何在运行下一个命令之前等待一个命令
答案 0 :(得分:1)
我认为你的忙碌"等待循环未正确写入。 尝试类似的事情:
until server_ready?("http://localhost:3001/index") do
sleep 1
end
而不是下一个。
另一件需要考虑的事情是如何在测试运行后停止服务。
答案 1 :(得分:0)
这是与Protractor有关的问题。我展示的代码毕竟有用......