[英]Taking a whole page screenshot with Selenium Marionette in Python
[英]Selenium, Python, Marionette certificate warning
我正在尝试自动将备份文件从(本地)无头数据服务器推送到(远程)安全备份服务器 - [出于原因](当前)需要通过 web 页面完成。
我编写了一个运行良好的 Selenium/Python 脚本,但忽略了所有证书错误——在这种情况下,这不是所需的行为。
cp /path/to/geckodriver-0.29.0/target/debug/geckodriver /usr/local/bin
大多数人(在我的搜索中)似乎都有确切的 /opposite/ 问题 - IE。 他们想禁用安全机制......但是在许多不同的解决方案中反转(字面上是真/假)逻辑并没有让我找到一个允许我启用证书检查的解决方案。
这是一些(缩写和注释)示例代码,我的(许多)尝试之一:
#!/bin/python3
from selenium import webdriver # selenium instance
from selenium.webdriver.firefox.options import Options # headless
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # Reject bad SSL
# Set headless mode
opts = Options()
opts.headless = True
# Enforce certificate checking - [this fails]
caps = DesiredCapabilities.FIREFOX
print(caps) # {'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': True}
caps['acceptInsecureCerts'] = False
print(caps) # {'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': False}
driver = webdriver.Firefox(capabilities=caps, options=opts)
# LOG FILE ENTRY APPEARS in geckodriver.log:
# "Marionette WARN TLS certificate errors will be ignored for this session"
driver.get("https://wrong.host.badssl.com")
# <<perform upload here>>
driver.save_screenshot("test.png") # Page was NOT blocked! :(
driver.close()
我的问题是:可以对此代码进行哪些修改,以便在(且仅当)SSL/TLS 证书有效时发生<<upload>>
?
如果<<upload>>
被阻止,额外的代码行显示原因 {"self-signed cert", "certrevoked", etc} 的额外荣誉。
from selenium import webdriver
capabilities = webdriver.DesiredCapabilities().FIREFOX
capabilities['acceptInsecureCerts'] = False
capabilities['marionette'] = True
driver = webdriver.Firefox(desired_capabilities=capabilities)
# LOG FILE ENTRY APPEARS in geckodriver.log:
# "Marionette WARN TLS certificate errors will be ignored for this session"
driver.get("https://wrong.host.badssl.com")
你应该使用期望的能力,使用上面的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.