【问题标题】:Selenium-Webdriver and PhantomJS on Openshift/Ruby - Error: "Unable to find phantomjs executable"Openshift/Ruby 上的 Selenium-Webdriver 和 PhantomJS - 错误:“无法找到 phantomjs 可执行文件”
【发布时间】:2015-09-03 15:15:32
【问题描述】:

我正在使用 Selenium-webdriver、watir、PhantomJS 无头浏览器等在 Openshift 平台(免费层)上进行 Web 测试项目,但遇到了一个我找不到解决方案的错误。

背景:我对 Ruby、Linux、Web 应用程序测试等还很陌生。我曾努力安装 Openshift(免费层)Ruby 设备,并且在这方面取得了成功。我可以通过 Filezilla SFTP 进入设备,可以通过 Putty SSH 进入应用程序,并拥有一个带有 OpenShift 工具(GIT 等)的 Windows 10 桌面。我已经安装了 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 可执行文件位于我的应用程序下的以下目录中: /app-root/data/phantomjs/bin

问题:如何克服这个错误并让 Selenium webdriver 查看 PhantomJS 的路径?

帮助赞赏....

【问题讨论】:

    标签: ruby selenium-webdriver phantomjs openshift watir


    【解决方案1】:

    当 PhantomJS 可执行文件不在您的路径中时,您需要使用 path= 方法告诉 Selenium-WebDriver 去哪里查找:

    require "selenium-webdriver"
    
    Selenium::WebDriver::PhantomJS.path = '/app-root/data/phantomjs/bin/phantomjs.exe'
    
    browser = Selenium::WebDriver.for :phantomjs
    

    【讨论】:

    • 感谢您的留言。我试过这个,但我得到以下错误:`assert_file':不是文件:“/approot/data/phantomjs/bin/phantomjs”。我尝试了 phantomjs 和 phantomjs.exe 都没有成功。一定是与 Openshift 平台相关的东西?
    • 对不起,我没有使用 Openshift 的经验,所以我不知道他们的文件结构是如何工作的。您是否尝试过提供文件的完整路径?
    【解决方案2】:

    这个问题是由于找不到 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2018-05-22
      • 2019-06-05
      • 2015-08-11
      • 1970-01-01
      相关资源
      最近更新 更多