Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
硒不';运行chrome headless-python-alert或弹出错误时无法加载页面_Python_Selenium - Fatal编程技术网

硒不';运行chrome headless-python-alert或弹出错误时无法加载页面

硒不';运行chrome headless-python-alert或弹出错误时无法加载页面,python,selenium,Python,Selenium,(无关背景信息:我的笔记本电脑被偷了,我这样做是为了如果再次发生这种情况,我有机会找回它) 问题是: 因此,我正在尝试运行一个python脚本,该脚本将(秘密地)截图当前地理位置,如本网站所示: 如果没有无头选项,它工作得很好,但是有了它,位置就不会加载。我怀疑无头模式不允许正确的弹出窗口或警报,因此chrome无法“记住”我选择的始终允许位置 我看过源代码,位置信息出现在“传单弹出内容”类下 我所尝试的: 我已经尝试使用wait-for元素present 详情如下: def waitForL

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

问题是:

因此,我正在尝试运行一个python脚本,该脚本将(秘密地)截图当前地理位置,如本网站所示:

如果没有无头选项,它工作得很好,但是有了它,位置就不会加载。我怀疑无头模式不允许正确的弹出窗口或警报,因此chrome无法“记住”我选择的始终允许位置

我看过源代码,位置信息出现在“传单弹出内容”类下

我所尝试的:

我已经尝试使用wait-for元素present

详情如下:

def waitForLoad(浏览器):
尝试:
WebDriverWait(浏览器,10,忽略\u异常=[
NoTouchElementException,TimeoutException
]).直到(EC.元素的存在位置((按.CLASS\u名称,'folive-popup-content'))
除TimeoutException外:
打印(“错误、超时、重试”)
browser.refresh()
waitForLoad(浏览器)
返回
我也尝试过firefox驱动程序(geckodriver),但在headless设置之前它甚至不起作用

守则:

导入硒元素
从selenium导入webdriver
从selenium.webdriver.chrome.options导入选项
chrome_options=options()
chrome\u选项。添加\u参数(“--headless”)
chrome_选项。添加_参数(“--disable infobar”)
browser=webdriver.Chrome('/home/tclack/bin/chromedriver',Chrome\u options=Chrome\u options)
#这是我使用的chromedriver和位置
url=”https://gps-coordinates.org/my-location.php"
browser.get(url)
browser.save_屏幕截图('screenshot.png')
browser.close()
browser.quit()
预期的输出是一个.png文件,其中选择了当前位置,正如您运行此文件时看到的,但注释掉了“--headless”行(第6行)。(也假设该网站在允许位置方面被列入“白名单”)

找到了“锻炼周围”

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

从pyvirtualdisplay导入显示
显示=显示(可见=0,大小=[10001000])
display.start()
.
.
.
#诸如此类,硒代码
.
.
.
display.stop()
有趣的是,我不知道无头模式和可视性设置为0的虚拟显示有什么不同,但至少它有我想要的效果