我正在用python写一个网页自动化程序。这里有没有一个隐藏geckodriver的方法?这样当我启动程序时,控制台(见图)就不会显示出来了。
console of geckodriver
下面是我代码的一小部分:
from selenium import webdriver
from selenium import *
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC`
driver=webdriver.Firefox()
wait=WebDriverWait(driver,120)
url = r"http://google.com"
driver.get(url) #This line starts the console (see picture)
7条答案
按热度按时间kt06eoxx1#
这在C#中对我很有效,它可以阻止geckodriver和firefox窗口
xzabzqsa2#
我实现了PyVirtualDisplay后就可以做到了
然后导入Display如下:
然后,在获取之前,按如下方式启动虚拟显示:
希望能有所帮助
yqkkidmi3#
在这里的方法已经解决了它在我的情况下.我用@thekingofravens的建议,但意识到这是刚刚够创建Run.bat文件,他在他的帖子中提到.以前我运行我的程序在空闲与F5.因为这个Geckodriver弹出每隔几秒钟.
我的解决方案:我只是用相同的代码创建了Run.bat文件:
就是这样。当你想运行代码的时候,只要启动这个文件,Geckodriver就不会弹出。(它不需要你的程序的完整路径,Python必须在PATH中。)当然,你也可以从命令行用上面的命令运行你的程序,而不需要创建额外的bat文件。
l3zydbqr4#
你得处理好几件事
1.保留有用的导入。必须避免像
from selenium import *
(在代码中)这样的不寻常的导入。1.保持代码最小化。
wait=WebDriverWait(driver,120)
在代码块中没有使用。1.使用原始
r
开关时,请记住使用单引号'...'
1.如果初始化webdriver示例,记得调用**
quit()
方法。1.使用
Python
时,请注意indentation
。1.下面是使用geckodriver打开url
http://www.google.com
、打印Page Title
**并退出驱动程序示例的最小代码。从 selenium 导入webdriver
控制台输出:
2skhul335#
所以我找到了一个非常通用的解决方法来解决Windows上的这个问题(在Linux中,这似乎不是一个问题,不能代表OSX)。
所以你需要制作三个文件,这非常尴尬。
首先,创建一个文件,命名为 * start.bat *(或其他名称),并在其中放入以下代码:
这将是顶级批处理脚本。当它启动Visual Basic脚本并将批处理脚本作为参数传递时,它将在一瞬间可见。这样做的目的是使下一个控制台不可见。接下来我们使VBscript,invisible.vbs:
最后,我们制作了 invisible.vbs 应该隐藏的脚本,我们可以称之为 * Run.bat *
发生的情况如下:
1.第一个.bat文件启动 invisible.vbs
1.invisible.vbs 启动第二个.bat文件,但不显示在屏幕上。
1.然后第二个.bat文件启动python程序. Python(和geckodriver)输出到不可见的cmd,因此隐藏了geckodriver控制台窗口。
P.S.所有这些都与PyInstaller一起工作,以产生一个用户只需点击即可的可再分发包。
感谢superuser.com提供了这个解决方案,这是我在试图解决一个不相关的问题时发现的。我测试并意识到它可以交叉应用于此。https://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way
mnemlml86#
因此,这不是一个完整的解决方案,但您可以通过使其更小和/或将其放在不那么麻烦的地方来减轻geckodriver命令窗口的干扰。为此,打开命令窗口,右键单击顶部栏,左键单击默认值,然后转到布局选项卡。在那里,您可以设置默认大小位置。
a8jjtwal7#
为了防止geckodriver显示任何窗口,你需要传入
-headless
参数: