0

右クリックとalt + yでページ内の画像をコピーしたいのですが、次のコードはfirefoxでうまく機能しますが、chromeとie. そのため、クリップボードから画像を取得できません。

require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto('www.baidu.com')
b.img(:src=>"http://www.baidu.com/img/baidu_sylogo1.gif").right_click
b.send_keys ("{alt}y")

フォローコードはうまく機能します

require 'watir-webdriver'
b = Watir::Browser.new :chrome
b.goto('www.baidu.com')
b.send_keys :tab

これはうまくいく

4

4 に答える 4

2

するとb.send_keys ("{alt}y")、{、a、l などの文字を入力するだけです。

代わりにこれを試してください:

b.send_keys([:alt, 'y'])

Watir と Watir-Webdriver は、send_keys に異なる入力を使用します -こちらを参照してください。

注:これで完全なスクリプトをテストしませんでした。正直なところ、alt+y を使用して画像をクリップボードに手動でコピーする方法がわかりません。

于 2012-04-13T16:48:33.090 に答える
1

Captcha (Completely Automated Public Turing Test To Tell Computers and Humans Apart)や自動化を妨害するように設計されたその他の認証システムなどの検証を自動化しようとして時間を無駄にしないでください。はい、それは可能ですが、効果的に軍拡競争に参加したり、風車を傾けたりしています。さらに重要なことに、それはあなたの雇用主に何の価値ももたらしません。

キャプチャまたは検証コードを自動化する正しい方法は、コードが予測可能になるようにテスト環境を構成することです。多くのキャプチャ ツールまたは検証ツールには、応答が設定された「テスト」モードで動作する機能があります。実稼働環境をそのように構成することは決してありませんが、テスト環境をそのように構成することは簡単にできます (また構成する必要があります)。

テスト環境のセットアップと管理を行っている担当者に相談してください。テスト環境であることを認識し、キャプチャまたは認証ツール (Google オーソライザーや 5 分ごとに数字を吐き出すウィジェットなど) の適切な API 呼び出しを使用してテスト モードにするロジックが必要なだけです。予測可能な検証応答。

これが私が話していることの例です: http://captcha.biz/doc/aspnet/api/captcha-configuration-reference.html#BotDetect.Configuration.ITestModeConfiguration

これをサポートしていないものを使用している場合は、キャプチャを完全にスキップするようにシステムを構成するか、(実際のキャプチャ システムではなく) 作成したテスト スタブをポイントするように構成することができます。これは、実際のキャプチャと同じ API を使用する、あなたまたは開発者が作成する小さなコードですが、常に同じ答えを期待します。その場合、すべてが実際のキャプチャ サービスと対話しているように動作しますが、対話している小さなスタブ コードは、常に同じ「応答」、たとえば「テスト」で同じ画像を送信します。

この種のことは、あらゆる種類のサードパーティのものを無効にするか、テスト モードにするか、テスト サンドボックス (キャプチャ、広告、Web サイト分析、トラッキング ピクセル、クレジット カード認証サービスなど) に接続するテスト環境では正常です。など)

于 2012-04-13T20:25:21.200 に答える
1

以前のコメントの 1 つに基づいて、最終的には画像を保存する方法が必要なようです。クリップボードにコピーすることは実際には重要ではないと思います。

したがって、Watir-Webdriver ですべてのナビゲーションを行ってから、他の Ruby gems (Open-URI または Net-Http など) のいずれかに切り替えて画像をダウンロードします。

以下は、Open-URI を使用した例です。

require 'watir-webdriver'
require "open-uri"

save_file = 'C:\Documents and Settings\Setup\Desktop\image.png'

b = Watir::Browser.new :chrome
b.goto('www.baidu.com')
image_location = b.img.src

File.open(save_file, 'wb') do |fo|
  fo.write open(image_location).read
end
于 2012-04-16T13:41:46.570 に答える
1

画像を保存する理由を知っておくと役立ちます。スクリーンショットは機能しますか?もしそうなら、これを試してください:

b.driver.save_screenshot "#{Time.now.to_i}.png"
于 2012-04-13T16:05:29.793 に答える