gpt4 book ai didi

ruby - 关闭自身的子浏览器窗口显然会破坏 Watir-webdriver 到父窗口的链接?

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:20 24 4
gpt4 key购买 nike

在 Chrome 中,使用 watir-webdriver,我点击了一个打开子浏览器窗口的按钮。

我愿意:

@browser.window(title: 'Child').use

我成功地与该子窗口中的各种项目进行了交互。

很快,在这个窗口中完成了一个操作,站点认为这是首先打开窗口的“点”。例如,

@browser.button(title: 'Button').click

执行此操作时,子窗口将自行关闭。

但是,当我告诉 watir-webdriver 返回使用父窗口时,我收到一个错误:

@browser.window(title: 'Parent').use # => results in
# Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed;
# The window could not be found

我认为这是一个 Selenium/Watir-webdriver 错误的原因是因为以下代码有效:

@browser.window(title: 'Child').use
# ... Now I do various things in the child window that do NOT
# ... cause it to close itself. They all work as expected.
# ...
puts @browser.window(title: 'Parent').present? #=>true
@browser.window(title: 'Child').close
puts @browser.window(title: 'Parent').present? #=>true
@browser.window(title: 'Parent').use # => No error thrown

唯一的区别是导致子窗口自行关闭的操作。

我注意到 watirspec 代码没有自动关闭窗口的测试用例,所以这可能是 watir-webdriver 中 windows 代码的一个被忽视的方面。

好的,下面是可以运行的代码,您可以自己查看这个问题:

require 'watir-webdriver'
@b = Watir::Browser.new :chrome
@b.goto 'ckeditor.com/demo#full'
@b.div(id: 'cke_editor1').link(title: 'Link').click
@b.link(title: 'Browse Server').wait_until_present
@b.link(title: 'Browse Server').click
@b.window(title: 'CKFinder').use {
@b.frame(title: 'CKFinder').link(id: 'r0').right_click
@b.frame(title: 'CKFinder').frame(id: 'cke_22_frame').wait_until_present
@b.frame(title: 'CKFinder').frame(id: 'cke_22_frame').link(id: 'cke_200').click
}

这将导致此错误:

Selenium::WebDriver::Error::NoSuchWindowError: emptyScript execution failed;
The window could not be found

别说我从来没有为你做过任何事! :-)

现在,在你问“你为什么要测试第 3 方编辑工具,你这个疯子?”之前我会回答你:我不是。

我正在测试的是 CKEditor 工具生成的源代码在特定情况下得到正确更新(这远远超出了这里问题的范围)。要设置它,我首先需要知道源代码是什么,以便稍后我可以验证它是否已通过不同的进程正确更新。为此,我必须首先使用 CKEditor 的链接工具正确设置它。卡皮切?

最佳答案

如果你需要回到第一个打开的窗口,你可以使用

@browser.windows[0]

您也可以这样做(未测试)

@browser.windows.each do |window|
if window.title.include?(target_string)
window.use
end
end

关于ruby - 关闭自身的子浏览器窗口显然会破坏 Watir-webdriver 到父窗口的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844105/

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