当前位置: 首页 > 知识库问答 >
问题:

Selenium Python:取消Chrome弹出的“您要离开此站点吗?您所做的更改可能无法保存”

叶越
2023-03-14

我有一个Python Selenium脚本:a)在主窗口上执行任务,B)启动第二个窗口C)切换到第二个窗口D)在第二个窗口上执行任务E)关闭第二个窗口F)切换回第一个窗口,继续执行任务。

mainWindow = driver.current_window_handle   # remember which window handle is "main"
xpathlink = "//a[.='Click to select']"      
driver.find_element_by_xpath(xpathlink).click()     # here is step B


print(driver.window_handles)                       # this confirms yes, there are 2 window handles now 
driver.switch_to_window(driver.window_handles[1])  # step C, switch to the newer window handle

#snip                                              # step D - this executes as expected

rowButtonPath = 'xpath_to_button_that_closes_second_window'                             
driver.find_element_by_xpath(rowButtonPath).click()  # step E - closes 2nd window 

print(driver.window_handles)              # this confirms there's just one window handle again -- the same as the one I started with
driver.switch_to_window(mainWindow)       # step F - try to switch back to first one 

从经验上看,变通办法应该是:*以不触发Chrome行为的方式返回第一个窗口*当webdriver实例启动时,通过调整Chrome的选项来取消此Chrome功能

...但我不知道怎么做。

共有1个答案

璩俊雅
2023-03-14

事实证明,省略步骤F是正确的答案(挂起行为是一个无关的bug)

显然,当弹出窗口关闭时,它会自动切换回第一个窗口。因此,“切换到第一个窗口”命令(当它已经在那里时)会触发Chrome说“你想离开这个网站吗?”

 类似资料:
  • 我想要“您所做的更改可能不会保存?”当用户试图关闭一个选项卡而没有正确退出时,我如何确保它显示出来?

  • 问题内容: 在stackoverflow中,如果您开始进行更改,然后尝试离开该页面,则会显示一个javascript确认按钮并询问:“确定要离开该页面吗?” blee blah bloo … 之前有人实施过此功能,如何跟踪所做的更改?我相信自己可以做到,我正在尝试向您的专家学习良好做法。 我尝试了以下操作,但仍然无法正常工作: 有人可以举一个例子吗? 问题答案: 更新(2017) 现在,现代浏览器

  • 问题内容: 在stackoverflow中,如果您开始进行更改,然后尝试离开该页面,则会显示一个javascript确认按钮并询问:“确定要离开该页面吗?” bleeblah bloo … 之前有人实施过此功能,如何跟踪所做的更改?我相信自己可以做到,我正在尝试向您的专家学习良好做法。 我尝试了以下操作,但仍然无法正常工作: 有人可以举一个例子吗? 问题答案: 更新 现在,现代浏览器认为显示自定义

  • 问题内容: 是否可以通过在指令范围内传递值来即时更改templateUrl?我想将数据传递到控制器,该控制器将根据从指令传递的数据来呈现页面 可能看起来像这样: 问题答案: 有可能,但是当要加载的模板取决于某些范围数据时,您将无法再使用指令的属性,并且您将不得不使用较低级别的API,即和。 大约需要做的事情(仅在链接功能中是可能的)是使用(不要忘了参与!)检索模板的内容,然后“手动”编译模板的内容

  • 问题内容: 我试图在注释中包含一条动态消息,该消息根据传递给它的其他变量中的值来更改文本的主体。我设置了默认消息,但是当设置了某个指示器时,我想显示其他消息。这可能吗? 这是我的注释- 这是注释使用的验证器类- 我最感兴趣的部分是读取的代码- 问题答案: 这是我能够执行此操作的方式-

  • 但是,浏览器不是(而是应该)关闭。我正在使用Selenium Ruby WebDriver。请指导我解决这个问题的方法。太感谢了。 请注意,使用上面的代码,我可以成功地关闭IE9浏览器,该浏览器弹出消息“此页面要求您确认您想离开-您输入的数据很多没有保存”与“离开页面”和“留在页面上”按钮。但是,如果弹出的消息内容是“您想从这个网站打开或保存”abc.txt“,代码就不能工作了。有3个按钮(“打开