PHP shell_exec 不允许 "Watir::Browser.new :firefox"执行

标签 php ubuntu watir watir-webdriver

我是 ruby​​ 和 Watir 的新手,这是我的问题......

我有一个 MySQL 数据库,里面有我需要的测试数据。过去我对这些数据做了很多工作,所以我有一个完整的 PHP 工具库来访问这些数据,将数据标记为使用/使用/坏/等,总的来说,我有很多时间投入到PHP 框架。所以我真的很想使用 PHP 框架作为 Watir 脚本的包装器——例如,使用 PHP 从数据库中获取测试用户登录数据并将其传递给 ruby​​ 脚本进行处理。

我现在有需要工作/测试的带有 javascript 的网站,而 PHP 和 cURL 无法处理这个问题。因此,我正在为这些站点在 Ubuntu 10.10(Maverick,桌面而非服务器)上使用 Watir-WebDriver。我遇到的问题是在所有 Watir 代码中使用 PHP 的 shell_exec 的 ruby​​ 脚本。

PHP shell_exec 正在执行该文件 - 我可以看到它,因为我在文件中有一些正在显示的 puts 行。但是,代码似乎在线失败

ff = Watir::Browser.new :firefox

我没有从 PHP 中得到错误。

PHP 行是:
echo shell_exec('ruby /var/www/watir_test.rb');

当我从终端窗口调用它时,ruby 脚本工作正常:
ruby /var/www/watir_test.rb

我最初预计这是一个权限问题,因为它是从命令行而不是从浏览器中工作的。但是,由于它可以很好地调用文件以返回我为测试提供的硬编码数据,因此 ruby​​ 文件权限似乎不是问题。从 www-data 用户打开 Firefox 窗口是否存在权限问题?

当我跑
ruby -d -v /var/www/watir_test.rb

我得到:
{:extension=>:webdriver} {"app.update.enabled"=>"false"} {"browser.link.open_newwindow"=>"2"} {"browser.shell.checkDefaultBrowser"=>"false"} {"extensions.update.enabled"=>"false"} {"security.warn_entering_secure.show_once"=>"false"} {"webdriver_assume_untrusted_issuer"=>true} {"startup.homepage_welcome_url"=>"\"about:blank\""} {"browser.tabs.warnOnClose"=>"false"} {"extensions.update.notifyUser"=>"false"} {"toolkit.networkmanager.disable"=>"true"} {"security.warn_entering_weak.show_once"=>"false"} {"webdriver_firefox_port"=>"7055"} {"browser.download.manager.showWhenStarting"=>"false"} {"extensions.logging.enabled"=>"true"} {"network.manage-offline-status"=>"false"} {"network.http.max-connections-per-server"=>"10"} {"security.warn_submit_insecure"=>"false"} {"security.warn_entering_weak"=>"false"} {"security.warn_leaving_secure"=>"false"} {"prompts.tab_modal.enabled"=>"false"} {"security.warn_viewing_mixed.show_once"=>"false"} {"dom.max_script_run_time"=>"30"} {"webdriver_accept_untrusted_certs"=>true} {"browser.safebrowsing.enabled"=>"false"} {"security.warn_leaving_secure.show_once"=>"false"} {"signon.rememberSignons"=>"false"} {"javascript.options.showInConsole"=>"true"} {"app.update.auto"=>"false"} {"browser.EULA.3.accepted"=>"true"} {"browser.tabs.warnOnOpen"=>"false"} {"dom.disable_open_during_load"=>"false"} {"network.http.phishy-userpass-length"=>"255"} {"security.warn_entering_secure"=>"false"} {"browser.startup.homepage"=>"\"about:blank\""} {"browser.EULA.override"=>"true"} {"browser.dom.window.dump.enabled"=>"true"} {"browser.startup.page"=>"0"} {"browser.link.open_external"=>"2"} {"browser.search.update"=>"false"} {"browser.sessionstore.resume_from_crash"=>"false"} {"security.warn_viewing_mixed"=>"false"} {"dom.report_all_js_exceptions"=>"true"} {"webdriver_enable_native_events"=>false} {"devtools.errorconsole.enabled"=>"true"}

如何让 PHP 正确执行 shell_exec?该脚本有效,我的初始测试是使用 firewatir 运行的(shell_exec 运行良好),但我真的很想使用 Watir-WebDriver 而不是 FireWatir - WatirWebDriver 应该能够在 FireWatir 上运行 Chrome 浏览器(和 Windows 机器上的 IE)只能运行火狐。

谢谢
加布

这是我的“创建浏览器”代码:
# Include the RubyGems file
require 'rubygems'

# Include the Watir-WebDriver file. 
require 'watir-webdriver'


# Create the necessary objects
def create_browser(proxy)
    # Setup the proper Firefox Profile
    profile = Selenium::WebDriver::Firefox::Profile.new
    profile.proxy = Selenium::WebDriver::Proxy.new :http => proxy

    puts "<br>Using proxy " + proxy + "..."


    #ff=FireWatir::Firefox.new :profile => profile
    ff = Watir::Browser.new :firefox #, :profile => profile

    puts "<br>Firefox ready..."

    return ff
end

最佳答案

如果服务器是 headless 的,您应该安装 headless gem 以便 Firefox 可以工作。

require 'watir-webdriver'
require 'headless'
headless = Headless.new
headless.start
b = Watir::Browser.start 'www.google.com'
puts b.title
b.close
headless.destroy

见:http://watirwebdriver.com/headless/

关于PHP shell_exec 不允许 "Watir::Browser.new :firefox"执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264551/

相关文章:

javascript - AngularJS : Handling value with same input name

php - PHP数组与数据库的性能

javascript - 使用 jQuery 获取输入值并在发布之前将其添加到表单操作中

php - 如何从类中删除一个 PHP 对象?

ubuntu - MySql - 添加逗号分隔符

ruby - 使用 Watir 进行 Gmail 注册访问网页元素

ruby - 在span类的html中解析类名

ruby - 使用 Watir Webdriver 测试 Highcharts

mysql - 连接到 MySQL 时出现问题 - 错误 2003 (HY000)

apache - 尝试设置 AUTHBIND=yes,但从 zip 文件安装 tomcat 时未创建文件 etc/default/tomcat8