首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Selenium在运行chrome headless - python - alert或弹出错误时不加载页面

Selenium在运行chrome headless - python - alert或弹出错误时不加载页面
EN

Stack Overflow用户
提问于 2019-06-01 08:35:47
回答 1查看 871关注 0票数 1

(无关紧要的背景信息:我的笔记本电脑被偷了,我做这个是为了如果它再次发生,我有很好的机会找回它)

问题是:

所以我正在尝试运行一个python脚本,它会(秘密地)根据这个网站截图当前的地理位置:https://gps-coordinates.org/my-location.php

它在没有headless选项的情况下工作得很好,但有了它,位置就无法加载。我怀疑无头模式不允许弹出窗口或提示,因此chrome不能“记住”我的选择,总是允许定位。

我已经查看了源代码,位置信息出现在"leaflet-popup-content“类下面

我尝试过的:

我已经尝试使用当前的wait for元素

如下所示:

代码语言:javascript
复制
def waitForLoad(browser):
    try:
        WebDriverWait(browser, 10, ignored_exceptions=[
            NoSuchElementException, TimeoutException
        ]).until(EC.presence_of_element_located((By.CLASS_NAME,'leaflet-popup-content')))
    except TimeoutException:
        print("Error, timed out, trying again")
        browser.refresh()
        waitForLoad(browser)
        return

我也尝试过使用firefox驱动程序(geckodriver),但在设置headless之前它甚至无法工作

代码:

代码语言:javascript
复制
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-infobars")
browser=webdriver.Chrome('/home/tclack/bin/chromedriver',chrome_options=chrome_options)
# YMMV this is the chromedriver I use and the location

url = "https://gps-coordinates.org/my-location.php"

browser.get(url)

browser.save_screenshot('screenshot.png')
browser.close()
browser.quit()

预期的输出是一个选择了当前位置的.png文件,如果您运行此命令,但注释掉了"--headless“行(第6行),您会看到这一点。(还假设该网站在允许位置方面是“白名单”)

EN

回答 1

Stack Overflow用户

发布于 2019-06-27 07:37:01

发现周围的锻炼

我想通了一些事。实际上,这与我尝试的角度完全不同。因此,我在尝试使用virtualdisplay,这是selenium中出现无头模式之前的一个旧解决方案。我发现我可以使用pyvirtualdisplay并将可见性设置为0,代码是完全相同的,但我将其夹在以下代码行之间:

代码语言:javascript
复制
from pyvirtualdisplay import Display

display = Display(visible=0, size = [1000,1000])

display.start()

.

.

.

#blah blah blah, selenium code

.

.

.

display.stop()

有趣的是,我不确定无头模式和可见性设置为0的虚拟显示有什么不同,但至少它有我想要的效果

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56403024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档