gpt4 book ai didi

javascript - 解决 selenium2 打印弹出窗口

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:37:03 26 4
gpt4 key购买 nike

我目前正在开发一个程序,在 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 的介绍中找到了这些代码行.

关于javascript - 解决 selenium2 打印弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318172/

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