0

selenium-webdriverAppleScript の と ruby​​ ポートの両方を利用して、webscraping を自動化しようとしていますrb-appscript。ただし、コードを実行しようとすると、セグメンテーション違反が発生し続けます。

コード:

require 'rubygems'
require 'appscript'; include Appscript
require 'selenium-webdriver'

# Open instance of Firefox
driver = Selenium::WebDriver.for(:firefox, :profile => "default")

# Open my webscraping extension
app('Firefox').activate
app("System Events").processes["firefox-bin"].menu_bars[1].menu_bar_items["Tool\
s"].menus["Tools"].menu_items["******"].click

driver.navigate.to "http://google.com"
driver.quit

この行:

driver = Selenium::WebDriver.for(:firefox, :profile => "default")

問題を引き起こしているようです。

別々のファイルで実行すると、2 つが正常に動作します。

セレンウェブドライバー:

require 'rubygems'
require 'selenium-webdriver'

driver = Selenium::WebDriver.for(:firefox, :profile => "default")
driver.navigate.to "http://google.com"
driver.quit

rb-appscript:

require 'rubygems'
require 'rb-appscript'; include Appscript

app('Firefox').activate
app("System Events").processes["firefox-bin"].menu_bars[1].menu_bar_items["Tool\
s"].menus["Tools"].menu_items["******"].click

問題は何ですか?私はルビーが初めてなので、何が問題を引き起こしているのか正確にはわかりません。

Ruby バージョン: 1.8.7 (2011-06-30 パッチ level352) OS: Mac OSX 10.6.8 64 ビット

4

2 に答える 2

0

質問に直接答えなかったことをお詫びしますが、回避策として、Watirをチェックしてください:http ://watir.com/ 。MacOSX10.6.8のFirefoxで正常に使用しています。次のようなもの:

require "rubygems"
require "watir-webdriver"

b = Watir::Browser.new :firefox
b.goto("http://google.com")
于 2011-07-25T05:14:18.803 に答える
0

ruby のバージョンが問題を引き起こしているようです。1.8.7 は 1.8 と 1.9 の間のブリッジであり、明らかに使用は推奨されていません。ruby 1.8.7 で多数の異なる gem を使用するとセグメンテーション違反が発生するという報告が多数あります。最新バージョン (1.9.2) にアップグレードすると問題が解決しました!

于 2011-07-26T16:28:10.257 に答える