【问题标题】:How do I handle SSL certificate error in python and selenium POM framework?如何处理 python 和 selenium POM 框架中的 SSL 证书错误?
【发布时间】:2021-05-29 22:15:27
【问题描述】:

我对这一切都很陌生,但我已经制作了一个混合框架(python、selenium、pytest、页面对象模型),用于练习自动化,并在 SSL 证书方面遇到了困难,以及如何忽略证书错误.我正在使用https://expired.badssl.com 网站对其进行测试

我发现使用的代码是:

    options = self.driver.ChromeOptions()
    options.add_argument('--ignore-certificate-errors')
    self.driver.Chrome(chrome_options=options)

我只是不确定它需要去哪里,如果它甚至是正确的代码使用。 这是我的 conftest.py 文件中的内容:

from selenium import webdriver
import pytest
from selenium.webdriver.chrome import options


@pytest.fixture()
def setup(browser):
    if browser == 'chrome':
        driver = webdriver.Chrome()
    elif browser == 'firefox':
        driver = webdriver.Firefox()
    else:
        driver = webdriver.Chrome()
    return driver


# have to include --browser (opyion) otherwise will return error
# added else, if no browser is specified, default to chrome


def pytest_addoption(parser):  # this will get the value from the cli/hooks
    parser.addoption("--browser")


@pytest.fixture()
def browser(request):  # this will return the browser to the setup method
    return request.config.getoption("--browser")


####### Pytest HTML reports #######

# hook for adding environment info to html report
def pytest_configure(config):
    config._metadata['Project Name'] = 'Hybrid Framework'
    config._metadata['Module Name'] = 'Customers'
    config._metadata['Tester'] = 'Amar'

# hook for delete/modify environment info to html report
@pytest.mark.optionalhook
def pytest_metadata(metadata):
    metadata.pop("JAVA_HOME", None)
    metadata.pop("Plugins", None) 

我创建了一个“sslcert_page.py”页面对象类和一个“test_sslcert.py”。我已经尝试在测试文件中包含代码,所以它看起来像这样:


from selenium.webdriver.chrome import options
from selenium.webdriver.chrome.options import Options

from pageObjects.SSLCertificate.sslcert_page import SSLCertHandling
from utilities.readProperties import ReadConfig


class Test_sslcertf:
    baseURL = ReadConfig.getApplicationURL()

    # logger = LogGen.loggen()

    def test_1(self, setup):
        # self.logger.info("************* Test_001_Login *************")
        self.driver = setup
        options = self.driver.ChromeOptions()
        options.add_argument('--ignore-certificate-errors')
        self.driver.Chrome(chrome_options=options)
        self.driver.get(self.baseURL)
        self.driver.maximize_window()
        sleep(5)
        self.sslcert = SSLCertHandling
        #self.sslcert.ignoreCert()

但是当我在终端中执行测试时,它甚至没有加载页面。

希望对此有更多了解的人可以帮助我。在没有设置页面对象模型的情况下完成代码是很好的。谢谢!

【问题讨论】:

    标签: python selenium frameworks pytest pageobjects


    【解决方案1】:
    caps = webdriver.DesiredCapabilities.CHROME.copy()
    caps['acceptInsecureCerts'] = True
    driver = webdriver.Chrome('./chromedriver', desired_capabilities=caps)
    driver.get(
        "https://untrusted-root.badssl.com/")
    

    您必须使用所需的功能

    【讨论】:

    • 谢谢。我将它放入 conftest.py 文件中,在 setup 方法中,就在 chrome 的 if 语句之前,这就是我的驱动程序初始化的地方,它现在加载网页,但仍然没有忽略证书错误:/
    • 再一次,你有一个 elee webdriver.webdriver()
    • 我现在已经在 else 声明下放了同样的东西,它会去网站,谢谢!!
    • 请点击对勾接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2018-12-25
    • 1970-01-01
    • 2014-08-21
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多