【问题标题】:Python Selenium: How to make browser window not openPython Selenium:如何使浏览器窗口无法打开
【发布时间】:2021-03-03 16:33:06
【问题描述】:

如何使硒窗口不打开?我不想看到打开的窗口,但我需要使用 selenium,因为我需要获取有关标题的信息,这些标题加载速度非常慢。 代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time 
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

PATH =".\msedgedriver.exe"
driver = webdriver.Edge(PATH)

driver.get("https://www.verivox.de/stromvergleich/vergleich/#/?plz=10555&persons=on&usage=3500&bonus=OnlyCompliant&profile=H0&product=electricity&source=1&q=WzYsMCwxLDEsMSwxLDEsMiwyMCwwLDEsNzQxMTIyLCI3MTA4NSIsMSwyNDAsMjQwLDM1MDAsMCwwLDAsOTk5LC0xLC0xLC0xLDAsMCwiVG90YWxDb3N0cyIsIkFzY2VuZGluZyIsIk5vbmUiLDM4LCJBbm51YWxDb3N0VmlldyIsMF0%3D&partnerid=1")


allheader=WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"li[class='result-item'] .result-name-area>.result-name")))
for header in allheader:
     print("Header: " + header.text)

我曾尝试使用phantonJS(),但我的代码无法正常工作并得到了

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
  warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

我也尝试使用xvfbwrapper,但出现错误

Traceback (most recent call last):
  File "skriptas.py", line 8, in <module>
    from xvfbwrapper import Xvfb
  File "C:\Users\andri\AppData\Roaming\Python\Python38\site-packages\xvfbwrapper.py", line 15, in <module>
    import fcntl
ModuleNotFoundError: No module named 'fcntl'

知道怎么做吗?谢谢你的帮助。

【问题讨论】:

  • 您会考虑使用其他网络浏览器吗?您需要的是无头模式,但 edge 不支持。
  • 哪些浏览器支持无头模式?
  • 火狐或铬。
  • 如果我的服务器没有像 FreeBSD 这样的图形界面?我需要做什么?

标签: python selenium selenium-webdriver webdriver phantomjs


【解决方案1】:

这条消息...

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
  warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '

...不是这样的错误,而是 支持的弃用警告。


解决方案

使用以下代码行来抑制错误:

import warnings

warnings.filterwarnings("ignore")

【讨论】:

  • 但我的代码不能比 Traceback 工作(最近一次通话最后一次):File "skriptas.py", line 17, in &lt;module&gt; allheader=WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"li[class='result-item'] .result-name-area&gt;.result-name"))) File "C:\Program Files\Python38\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:
  • @Kalakutas 您的问题标题是...如何使浏览器窗口无法打开... 并关注deprecation warning。这就是我的回答。粗略的答案并没有解决元素的发现问题。您可能需要针对您的新要求提出一个新问题。
  • 哦,但是您的代码只是忽略了关于 Selenium 支持 PhantomJS has been deprecated 的第一个警告,它不能解决我的问题。
  • @Kalakutas 是的,请重新阅读您的问题标题...如何使浏览器窗口无法打开... 指向警告而不是元素查找部分。
  • 好吧,你赢了:/