这是一个创建于 2021 天前的主题,其中的信息可能已经有所发展或是发生改变。
我的需求是,在 linux headless chrome 下执行一些自动操作。
现在遇到的问题是,如果是 http 的网页则一切正常。如果是 https 的,无论是证书可信不可信,均无法操作。效果就是找不到元素,截图也是一片空白。
环境使用的是 docker,里面都是比较新的 chrome 和 chromedriver。
headless chrome 和 driver 使用的是 docker 镜像,joyzoursky/python-chromedriver 3.7-alpine3.8-selenium
(Session info: headless chrome=68.0.3440.75)
(Driver info: chromedriver=2.38 (f91d32489882be7df38da3422a19713bfd113fa5),platform=Linux 4.4.59+ x86_64)
镜像应该是没问题的。
"""
A simple selenium test example written by python
"""
import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver import DesiredCapabilities
import time
class TestTemplate(unittest.TestCase):
"""Include test cases on a given url"""
def setUp(self):
"""Start web driver"""
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--ignore-certificate-errors')
capabilities = DesiredCapabilities.CHROME
capabilities["ACCEPT_SSL_CERTS"] = True
self.driver = webdriver.Chrome(chrome_options=chrome_options, desired_capabilities=capabilities)
self.driver.implicitly_wait(10)
def tearDown(self):
"""Stop web driver"""
self.driver.quit()
def test_case_1(self):
"""hai zei wang"""
try:
self.driver.get('https://vol.moe/')
time.sleep(10)
self.driver.get_screenshot_as_file("hzw.png")
except NoSuchElementException as ex:
self.fail(ex.msg)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TestTemplate)
unittest.TextTestRunner(verbosity=2).run(suite)
1 条回复 • 2019-04-21 23:30:06 +08:00
|
|
1
bantianys 2019-04-21 23:30:06 +08:00
加上下面几个配置就可以了。 capabilities["acceptSslCerts"] = True capabilities["acceptInsecureCerts"] = True capabilities["ignore-certificate-errors"] = True
|