在使用selenium的时候,模拟手机端访问网页,某一些网站就会询问是否允许浏览器获取定位,这样的情况下,如果你不同意,这个弹框就一直在,怪影响美观的!
为了解决这个问题,小编开始展开了自救之道,于是就有了下面的研究成果。
有的时候由于网站会获取你的位置信息,一直会弹出一个框问你是否同意,这个框对你的脚本运行没有任何影响,所以只要在headless下运行就看不见了,如果你希望弹框消失,就得点击下允许或禁止。
在这里小编提供一个代码自动允许的方法:
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-infobars')
chrome_options.add_argument('--hide-scrollbars')
chrome_options.add_argument('--ignore-certificate-errors')
prefs = {
'profile.default_content_setting_values': {
# 也可以这样写,两种都正确
# 'profile.default_content_settings': {
# 'images': 2, # 不加载图片
# 'javascript': 2, # 不加载JS
# "popups": 0,
# 'notifications': 2
},
'download.default_directory': '/home/',
'profile.managed_default_content_settings.popups':0,
# 是否允许获取地址定位 0不允许 1允许
"profile.default_content_setting_values.geolocation": 1,
}
chrome_options.add_experimental_option("prefs", prefs)
geolocation设置为1,就是代表自动同意网站获取你的地理位置。
设置为2就是禁止。