微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 解决selenium2打印弹出窗口的问题

我目前正在开发一个程序,在selenium的webdriver和firefox的帮助下,通过域抓取它,在此过程中抓取所有可见文本. (用python编写的程序)

当selenium使用javascript window.print()打开页面时,爬虫程序正在停止,等待我在出现的弹出窗口中手动单击“关闭”.

我在延迟时间之后尝试了driver.select_pop_up()函数,希望能够在选择窗口后关闭窗口.但是无法选择窗口.

我一直在阅读这个问题,从this selenium FAQ page开始,我几乎得出结论,当我阅读时,我必须做一个解决方法

解决此问题,您可以使用变通方法(如果存在);否则您可能必须从自动语料库中排除测试.

我看到的唯一解决方案是不打开包含“打印”一词的链接描述的网页,但我觉得这很难看,并且想听听其他人是否有更好的想法.

显示我的问题示例的代码

from selenium               import webdriver  
import time

skrivutsiden = 'www.alfkvam.no/index.PHP?id=4849944&cat=159037&printable=1'
vanligside = 'http://www.google.no'

driver = webdriver.Firefox()

driver.get(vanligside)
driver.get(skrivutsiden)

编辑:

使用prestomanifesto提出的代码,我实际设法在空的firefox窗口中触发“打印弹出窗口”.当代码产生我试图避免的事件时,我认为它首先可能是错误代码?这是一个错误的结论吗?
下面的代码生成了弹出窗口:

from selenium               import webdriver  
import time

driver = webdriver.Firefox()
driver.execute_script("window.print() = function() {}")

重新编辑:

上面的代码触发弹出窗口的原因是因为我得到了错误的javascript – 我写道

“window.print() = function() {}”

代替

“window.print = function() {}”

这并没有解决原始问题,但它解释了第一次编辑中引入的意外弹出窗口.

我道歉前言

重新编辑:

尝试更新解决方案我找到了this site,在那里我看到了以下代码行:

((JavascriptExecutor)m_driver).executeScript("window.confirm = function(msg){return
false;};");

基于此,我尝试了以下无济于事:

driver.execute_script("window.print = function(msg) {return false;};")

解决方法:

我终于找到了一个解决方法

我贴了

    "print.always_print_silent": "true",
    "print.show_print_progress": "false",

进入Firefox用户配置文件. Selenium拥有自己的用户配置文件,您可以编辑它.包含该配置文件文件名为firefox_profile.py

请注意,这只能在不通过弹出窗口询问用户的情况下进行打印.它对我有用,因为我没有连接打印机.

我在r-kiosk add-on的介绍中找到了这些代码行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐