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