2
[7] pry(#<RSpec::Core::ExampleGroup::Nested_1>)> page.execute_script "window.close()"
Selenium::WebDriver::Error::NoSuchWindowError: Script execution failed. Script: window.close();
 The window could not be found

[8] pry(#<RSpec::Core::ExampleGroup::Nested_1>)> page.driver.browser.window_handles
=> ["f1-2"]

2 つのタブでブラウザーを開いていましたが、上記のコマンドは 1 つを閉じますが、最後のタブは閉じません。開いていますが、実行しようとするpage.execute_script "window.close()"と上記のエラーが発生します。

page.driver.browser.window_handles.each do |handle|
  page.driver.browser.switch_to.window(handle)
  page.execute_script "window.close()"
end

上記のコードは、以前は機能していましたが、機能しなくなりました。同じエラーが発生します。

アップデート:

使うときは、

page.driver.browser.window_handles.each do |handle| 
   page.driver.browser.switch_to.window(handle) 
   page.driver.browser.close 
end

次のエラーが表示Selenium::WebDriver::Error::UnknownError: 'auto_id'されます 開いているタブを参照していません

4

3 に答える 3

1

あなたがそれを行うことができる2つの方法

  1. JSを使用したテクニックに沿って。まず、最初のブラウザ ウィンドウ (window_handle) に切り替えてから、「window.close()」を実行する必要があります。(好ましくない)(なぜ今は動かないのかわからない。サーバーのバージョンをアップグレードしたか、別のブラウザを使ったか?)

  2. 単に使用する@driver.quit(推奨)

アップデート


これは一度書いてみてください。これにより、すべてのウィンドウが閉じます。

  after(:each) do
    @driver.quit
  end

ブラウザーのタブ/ウィンドウ/ポップアップを 1 つだけ閉じたい場合は、その window_handle に切り替えてから実行します。

@driver.close();
于 2012-11-08T14:43:35.873 に答える
0

きゅうりを使用している場合は、BEFORE/AFTERフックを使用できます。きゅうりの詳細については、 stackoverflow で同様の質問 を参照してください。このCucumber Hooksを参照してください。

于 2013-07-19T11:47:25.417 に答える