gpt4 book ai didi

ruby-on-rails - 如何在测试套件中的下一个测试之前关闭所有窗口?

转载 作者:行者123 更新时间:2023-11-28 20:09:10 26 4
gpt4 key购买 nike

[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"]

我打开了一个带有两个选项卡的浏览器,上面的命令确实关闭了一个,但最后一个选项卡从未关闭。它是打开的,但是当我尝试运行 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' does not refer to an open tab

最佳答案

两种方法

  1. 符合您使用 JS 的技术。您首先需要切换回您的第一个浏览器窗口 (window_handle),然后执行“window.close()”。 (不是首选)(不确定为什么它现在对您不起作用,您是否升级了服务器版本或不同的浏览器?)

  2. 只需使用@driver.quit(首选)

更新


只写一次。这将关闭所有窗口。

  after(:each) do
@driver.quit
end

如果你只想关闭一个浏览器标签/窗口/弹出窗口,切换到那个window_handle然后执行

@driver.close();

关于ruby-on-rails - 如何在测试套件中的下一个测试之前关闭所有窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com