短版:Chrome 中的新标签页阻止旧标签页被使用,修复这意味着打开的带有 PDF 的标签页在人们可以检查 PDF 之前被重用。
长版:最初它是这样工作的:
- 打开新的 Chrome 窗口到应用程序的主页(标签 #1) 2.[执行进程 A,然后] 单击按钮并打开一个新标签(标签 #2),其中包含 PDF A。
- 返回选项卡#1 [执行流程 B 然后] 单击按钮并打开一个新选项卡(选项卡 #3),其中包含 PDF B。
- 返回选项卡#1 [执行进程 C 然后] 单击按钮并打开一个新选项卡(选项卡 #4)并下载 Word 文档 C 文档。
- 返回选项卡#1 [执行进程 D,然后] 单击按钮并打开一个新选项卡(选项卡 #5)并下载 Word 文档 D 文档。
所有选项卡都保持打开状态,并且可以查看 PDF。不完美,但可行。
但后来事情发生了变化。我把常用的东西拿出来,把它们放在另一个文件的方法中,这样所有的各种测试都可以使用它们,这似乎是个好主意。但这似乎导致了失去对原始窗口的关注的问题。(我可能错了)现在我坚持:
- 打开新的 Chrome 窗口到应用程序的主页(标签 #1)
- [执行处理 A 然后] 单击按钮并打开一个新选项卡(选项卡 #2),其中包含 PDF A。
- 留在选项卡 #2 [执行流程 B 然后] 单击按钮并打开一个新选项卡(选项卡 #3),其中包含 PDF B。PDF A 现在丢失了
- 留在标签 #3 [执行进程 C 然后] 单击按钮,一个新标签(标签 #4)打开并下载 Word 文档 C 文档。PDF B 现在丢失了
- 停留在选项卡#4 [执行进程 D 然后] 单击按钮并打开一个新选项卡(选项卡 #5)并下载 Word 文档 D 文档。
这是由使用“b.windows.last.use”引起的所以我尝试使用“b.windows.first.use”但是失败了,因为焦点不会回到标签#1,并且 watir 找不到模态中需要单击的对象。(在 `assert_ok' 中:元素在点 (737.5, -373) (Selenium::WebDriver::Error::UnknownError) 处不可点击)
据我所知,如果我能做到以下任何一项都可以
- 获取 PDF 下载。我不能。这个页面看起来很有希望,但代码不起作用,我无法修复它。
- 让 watir 回到第一页,“for realsies”,然后找到它需要的按钮
- 也许为测试的每个部分打开一个新标签(我将研究这个,但我并不太抱有希望)
有任何想法吗?我在过去两个月内更新了 Watir 和 Ruby。我在 OSX 上使用 Chrome。迁移到 Windows 或 IE 不是可行的选择。
这是代码的一部分。不,我首先不是程序员。
谢谢。
currenturl = "stackoverflow.placeholder.com/works"
# print Inventory Report .PDF (document 1)
b.goto currenturl
b.div(:id, 'page').a(:text, 'Inventory Report').click
sleep 1
b.div(:id, 'printInventoryReportModal').a(:text, 'A4').click
b.link(:id => "submitBTNprint-inventory-report").fire_event "onclick"
# print General List .PDF (document 2)
b.goto [main page URL]
b.div(:id, 'page').a(:text, 'General List').click
sleep 1
b.div(:id, 'printGeneralInventoryListModal').a(:text, 'A4').click
b.link(:id => "submitBTNprint-general-list").fire_event "onclick"
# print General List .DOC (document 3)
b.goto [main page URL]
b.div(:id, 'page').a(:text, 'General List').click
sleep 1
b.div(:id, 'printGeneralInventoryListModal').a(:text, '.DOC').click
b.div(:id, 'printGeneralInventoryListModal').a(:text, 'A4').click
b.link(:id => "submitBTNprint-general-list").fire_event "onclick"