相关疑难解决方法(0)

如何使用python在Selenium中以编程方式使firefox无头?

我用python,selenium和firefox运行这段代码,但仍然得到firefox的'head'版本:

binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe', log_file=sys.stdout)
binary.add_command_line_options('-headless')
self.driver = webdriver.Firefox(firefox_binary=binary)
Run Code Online (Sandbox Code Playgroud)

我也尝试了二进制的一些变体:

binary = FirefoxBinary('C:\\Program Files\\Nightly\\firefox.exe', log_file=sys.stdout)
        binary.add_command_line_options("--headless")
Run Code Online (Sandbox Code Playgroud)

python selenium python-3.x selenium-webdriver firefox-headless

88
推荐指数
4
解决办法
8万
查看次数

selenium / seleniumwire 未知错误:无法从未知错误确定加载状态:意外的命令响应

这是错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
  (Session info: chrome=103.0.5060.53)
Run Code Online (Sandbox Code Playgroud)

我正在使用正确的网络驱动程序和 chrome 版本:

这是脚本,它的工作是从普通用户数据目录打开网页并提供响应。

from seleniumwire import webdriver  # Import from seleniumwire


chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=C:\\selenium") 

driver = webdriver.Chrome(chrome_options=chrome_options)

driver.get('https://katalon.com/
')


for request in driver.requests:
    if request.response:
        print(
            
            request.response.status_code,
            
        )
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver seleniumwire

35
推荐指数
5
解决办法
4万
查看次数

强制python使用旧版本的模块(比我现在安装的版本)

我的雇主有一个专用模块1,我们用于内部单元/系统测试; 但是,这个模块的作者不再在这里工作,我被要求用它测试一些设备.

问题是pyfoo需要古老版本的twisted(v8.2.0)并且它导入twisted了33个不同的文件.我尝试pyfoo在v11.0.0下运行单元测试,我甚至没有看到TCP SYN数据包2.不幸的是,我已经在我的实验室linux服务器上安装了扭曲的v11.0.0,并且我有自己的代码依赖于它.

为了解决这个问题,我一直在绞尽脑汁,但我只能提出以下选择:

选项A.安装新版本的python,安装virtualenv,然后安装旧版本twistedvirtualenv.只运行pyfoo在这个新版本的python下需要的测试.

选项B.使用以下内容编辑所有33个文件:DIR = '../'; sys.path.insert(0, DIR)并在源代码下面的相应目录中安装旧版本的python.

选项C.尝试修复pyfoo使用v11.0.0 3

我有什么选择吗?除了上面的选项A之外,还有更优雅的方法来解决这个问题吗?


END-NOTES:

  1. 我们pyfoo为了争论而称之为
  2. 单元测试连接到我们的一个本地实验室服务器并执行基本的telnet功能
  3. 这个选项几乎不是首发...... pyfoo这不是一件轻而易举的事,而且这项工作的截止日期很短.

python linux twisted python-import

18
推荐指数
2
解决办法
3万
查看次数

DeprecationWarning:不推荐使用 headless 属性,而是在 Selenium 4.8.0 Python 上使用 add_argument('--headless') 或 add_argument('--headless=new')

我正在尝试在无头模式下使用Selenium 4.8.0 Python 客户端执行一个基本程序:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

options = Options()
options.headless = True
s = Service('C:\\BrowserDrivers\\chromedriver.exe')
driver = webdriver.Chrome(service=s, options=options)
driver.get('https://www.google.com/')
driver.quit()
Run Code Online (Sandbox Code Playgroud)

具有以下配置:

  • 硒 4.8.0 Python
  • Chrome _版本 109.0.5414.120(官方版本)(64 位)
  • Chrome驱动程序109.0.5414.25

尽管程序成功执行,但出现 DeprecationWarning 似乎为:

DeprecationWarning: headless property is deprecated, instead use add_argument('--headless') or add_argument('--headless=new')
Run Code Online (Sandbox Code Playgroud)

谁能解释 DeprecationWarning 和所需的更改?

python selenium headless selenium-chromedriver selenium-webdriver

14
推荐指数
2
解决办法
2万
查看次数

使用Headless Chrome Webdriver运行Selenium

所以我正在尝试一些硒处理方法,我真的希望它能很快。

所以我的想法是,使用无头的chrome运行它可以使我的脚本更快。

首先,该假设是正确的,还是如果我使用无头驱动程序运行脚本并不重要?

无论如何,我仍然希望它能够正常运行,但是我不知何故,我尝试了不同的方法,并且大多数人建议它可以如十月更新中所说的那样工作

如何配置ChromeDriver通过Selenium以无头模式启动Chrome浏览器?

但是当我尝试这样做时,我得到了奇怪的控制台输出,但它似乎仍然不起作用。

任何小费表示赞赏。

python selenium google-chrome selenium-chromedriver google-chrome-headless

13
推荐指数
4
解决办法
3万
查看次数

Python 请求 - “要继续,您的浏览器必须接受 cookie,并且必须启用 JavaScript。”

我想从 mobile.de 上抓取一些供个人使用的广告。

我正在使用 python 3.6 和 requests lib,但我面临一些机器人检查的问题。我怎样才能从他们的网站通过这个网关?

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.mobile.de/?lang=en")
bs = BeautifulSoup(r.content, 'lxml')
print(bs)
Run Code Online (Sandbox Code Playgroud)

这部分代码向我显示以下内容:

<p>To continue your browser has to accept cookies and has to have JavaScript enabled.</p>
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到我需要解决的逻辑才能通过这个问题?

python cookies web-scraping python-3.x python-requests

8
推荐指数
1
解决办法
3万
查看次数

通过 Selenium Python 在普通/无头模式下使用 ChromeDriver/Chrome 访问 Cloudflare 网站有什么区别

我有一个问题 --headlessPython Selenium for Chrome 模式。

代码

 from selenium import webdriver
 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

 CHROME_DRIVER_DIR = "selenium/chromedriver"

 chrome_options = webdriver.ChromeOptions()
 caps = DesiredCapabilities().CHROME
 chrome_options.add_argument("--disable-dev-shm-usage")
 chrome_options.add_argument("--remote-debugging-port=9222")
 chrome_options.add_argument("--headless")  # Runs Chrome in headless mode.
 chrome_options.add_argument('--no-sandbox')  # # Bypass OS security model
 chrome_options.add_argument("--disable-extensions")
 chrome_options.add_argument("--disable-gpu")

 browser = webdriver.Chrome(desired_capabilities=caps, executable_path=CHROME_DRIVER_DIR, options=chrome_options)

 browser.get("https://www.manta.com/c/mm2956g/mashuda-contractors")
 print(browser.page_source)
 browser.quit()
Run Code Online (Sandbox Code Playgroud)

当我删除chrome_options.add_argument("--headless")所有工作正常时,但是--headless*有了下一个问题

Please enable cookies.

Error 1020 Ray ID: 53fd62b4087d8116 • 2019-12-04 11:19:28 UTC

Access denied

What happened?
This website is using a security service to …
Run Code Online (Sandbox Code Playgroud)

python selenium cloudflare selenium-chromedriver google-chrome-headless

8
推荐指数
3
解决办法
1万
查看次数

HTML表格未显示在源文件中

我正在尝试使用R(包rvest)在网页上刮取表格数据.要做到这一点,数据需要在html源文件中(rvest显然在那里寻找它),但在这种情况下它不是.

但是,数据元素显示在"检查"面板的"元素"视图中:

表格的元素显示在

源文件显示一个空表:

view-source文件显示一个空表

为什么数据显示在inspect元素上而不是源文件上?如何以html格式访问表数据?如果我无法通过HTML访问如何更改我的网络抓取策略?

*网页是 https://si3.bcentral.cl/siete/secure/cuadros/cuadro_dinamico.aspx?idMenu=IPC_VAR_MEN1_HIST&codCuadro=IPC_VAR_MEN1_HIST

源文件: view-source:https://si3.bcentral.cl/siete/secure/cuadros/cuadro_dinamico.aspx?idMenu = IPC_VAR_MEN1_HIST&codCuadro = IPC_VAR_MEN1_HIST


编辑:赞赏使用R的解决方案

html javascript r web-scraping rvest

7
推荐指数
1
解决办法
771
查看次数

在执行一段时间后,Selenium 为所有网站提供“从渲染器接收消息超时”

我有一个应用程序,我需要一个长时间运行的Selenium Web 驱动程序实例(我在无头模式下使用Chrome 驱动程序 83.0.4103.39)。基本上,该应用程序不断从队列中提取 url-data,并将提取的 url 提供给 Selenium,Selenium 应该在网站上执行一些分析。许多这些网站可能已关闭、无法访问或损坏,因此我将页面加载超时设置为 10 秒,以避免 Selenium 永远等待页面加载。
我在这里遇到的问题是,经过一些执行时间(假设 10 分钟)Selenium 开始给出Timed out receiving message from renderer每个 url 的错误。最初它工作正常,它可以正确打开好的网站并在坏网站上超时(网站无法加载),但一段时间后它开始对所有内容超时,即使是应该正确打开的网站(我已经检查过,它们在 Chrome 浏览器上正确打开)。我很难调试这个问题,因为应用程序中的每个异常都被正确捕获。我也注意到这个问题只发生在headless模式中。

  • 更新 *
    在网站分析期间,我还需要考虑 iframe(仅顶级),因此我还添加了一个逻辑来将驱动程序上下文切换到主页中的每个 iframe 并提取相关的 html。

这是应用程序的简化版本:

import traceback
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

width = 1024
height = 768

chrome_options = Options()
chrome_options.page_load_strategy …
Run Code Online (Sandbox Code Playgroud)

python iframe selenium renderer selenium-chromedriver

7
推荐指数
1
解决办法
6065
查看次数

org.openqa.selenium.WebDriverException:未知错误:Chrome 无法启动:在 Ubuntu 18.04 上的 Jenkins 中使用 ChromeDriver Selenium 崩溃

Chrome 在我的 Jenkins 上不稳定。当我运行 build 5 次时,它运行 1 - 2 次成功,另外 3 次出现上述错误。

错误截图: 在此处输入图片说明

Chrome 代码:

ChromeOptions options = new ChromeOptions();
System.setProperty("webdriver.chrome.driver","/usr/local/bin/chromedriver");
options.addArguments("--headless");
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
driver = new ChromeDriver(options);
driver.get("https://mywebsite.com");
     
Run Code Online (Sandbox Code Playgroud)

我已经采取了一些步骤:

  1. 为 google chrome 和 chrome 驱动程序提供了 777 权限

  2. 设置:在构建之前启动 Xvfb,然后在 Jenkins 构建设置中将其关闭为 True 在此处输入图片说明

  3. ChromeDriver 81.0.4044.69

  4. 谷歌浏览器 81.0.4044.129

  5. Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-99-generic x86_64)

java google-chrome jenkins selenium-webdriver ubuntu-18.04

6
推荐指数
1
解决办法
1076
查看次数