我正在使用Selenium-webdriver,watir,PhantomJS无头浏览器等在Openshift平台(免费套餐)上进行网络测试项目,并且遇到了一个我无法找到解决方案的错误。
背景:我对Ruby,Linux,Web应用程序测试等都很陌生。我曾经安装了一个Openshift(免费层)Ruby设备,并且在那方面取得了成功。我可以通过Filezilla进入SFTP,可以通过Putty SSH进入应用程序,并拥有一个带有OpenShift工具的Windows 10桌面(GIT等)我已经安装了Selenium-Webdriver和PhantomJS。
我正在尝试通过以下“Ruby中的Web应用程序测试”指南来实现Openshift平台上的以下代码。
指南: https://leanpub.com/watirbook/read#leanpub-auto-irb-interactive-ruby-shell
我正在努力实施的代码:
require "selenium-webdriver"
browser = Selenium::WebDriver.for :phantomjs
browser.get "http://google.com"
p browser.current_url
p browser.title
browser.find_element(name: "q").send_keys "watir"
browser.find_element(name: "q").clear
p browser.find_element(name: "q").attribute(:name)
p browser.find_element(name: "q").attribute(:class)
p browser.find_element(name: "q").attribute(:type)
p browser.find_element(name: "q").
attribute(:autocomplete)
browser.save_screenshot "phantomjs.png"
p browser.page_source
p browser.find_element(name: "q").
attribute(:outerHTML)
browser.quit
当我按照以下命令的指示运行此代码时:
ruby headless_phantomjs.rb
我收到以下错误:
/var/lib/openshift/MYAPPID/.gem/gems/selenium-webdriver-2.47.1/lib/selenium/webdriver/phantomjs/service.rb:39:in `executable_path': Unable to find phantomjs executable. (Selenium::WebDriver::Error::WebDriverError)
from /var/lib/openshift/55e5f36b89f5cf105a000102/.gem/gems/selenium-webdriver-2.47.1/lib/selenium/webdriver/phantomjs/service.rb:47:in `default_service'
from /var/lib/openshift/55e5f36b89f5cf105a000102/.gem/gems/selenium-webdriver-2.47.1/lib/selenium/webdriver/phantomjs/bridge.rb:38:in `initialize'
from /var/lib/openshift/55e5f36b89f5cf105a000102/.gem/gems/selenium-webdriver-2.47.1/lib/selenium/webdriver/common/driver.rb:64:in `new'
from /var/lib/openshift/55e5f36b89f5cf105a000102/.gem/gems/selenium-webdriver-2.47.1/lib/selenium/webdriver/common/driver.rb:64:in `for'
from /var/lib/openshift/55e5f36b89f5cf105a000102/.gem/gems/selenium-webdriver-2.47.1/lib/selenium/webdriver.rb:86:in `for'
from headless_phantomjs.rb:7:in `<main>'
在Ruby中的IRB中,我可以使用Path命令查找路径: / opt / rh / ruby193 / root / usr / bin /但无法访问或编辑它。
我已经验证了phantomJS可执行文件位于我的应用程序下面的以下目录中: /应用根/数据/ phantomjs / bin中
问题:如何解决此错误并让Selenium webdriver查看PhantomJS的路径?
帮助表示赞赏....
答案 0 :(得分:4)
当PhantomJS可执行文件不在您的路径中时,您需要使用path=
方法告诉Selenium-WebDriver在哪里查看:
require "selenium-webdriver"
Selenium::WebDriver::PhantomJS.path = '/app-root/data/phantomjs/bin/phantomjs.exe'
browser = Selenium::WebDriver.for :phantomjs
答案 1 :(得分:0)
此问题是由于未能找到phantomjs引起的。 所以你需要先安装它并添加路径。
例如在Windows中,test.rb
require 'selenium-webdriver'
require 'phantomjs'
Selenium::WebDriver::PhantomJS.path = 'C:\\Users\\name\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe'
driver = Selenium::WebDriver.for :phantomjs
driver.navigate.to "http://google.com"
puts driver.title
driver.quit