测试人社区

selenium复用踩坑

在讲了第一次selenium实战后,了解到复用这个概念,于是自己动手写了如下代码:
第一版是照着授课代码敲了一遍,当自己运行时发现无法复用,老是重新打开一个Chrome浏览器,代码如下:

class Testdemo:
    def setup_method(self, method):
        chrome_opts = webdriver.ChromeOptions()
        chrome_opts.debugging_address = "127.0.0.1:9222"
        self.driver = webdriver.Chrome(options=chrome_opts)

    # @pytest.mark.skip
    # def teardown(self):
    #     self.driver.quit()

    def test_case(self):
        # 点击testhome首页的登录按钮
        self.driver.find_element_by_css_selector(".d-button-label:nth-child(2)").click()
        #点击百度“搜一搜按钮”
        # self.driver.find_element_by_id("su").click()

后来群里请教大神和老师,修改了初始化方法名,重新定义了一个方法,等尽管最后还是失败,但是也由衷的感谢各位。后来在网上搜寻资料后修改了以下几个点,终于复用成功了。
1.开启debugging窗口时增加一个存放浏览器相关参数的配置,形成一个干净的Chrome环境:(后面发现这个不需要增加这个参数也是可以运行的)

chrome --remote-debugging-port=9222 --user-data-dir="D:\selenium\AutomationProfile

--user-data-dir:指定创建新chrome配置文件的目录。它确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。

2.重新定义了options的方式:

class Testdemo:
    def setup_method(self, method):
        chrome_options = Options()
        chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
        self.driver = webdriver.Chrome(chrome_options=chrome_options)

    # @pytest.mark.skip
    # def teardown(self):
    #     self.driver.quit()

    def test_case(self):
        # 点击testhome首页的登录按钮
        self.driver.find_element_by_css_selector(".d-button-label:nth-child(2)").click()
        #点击百度“搜一搜按钮”
        # self.driver.find_element_by_id("su").click()

最后虽然是可以正常运行了,但是自己还是不是很清楚两种定义方式哪里不一样,还是我的第一种有错误的地方,希望路过的大神帮忙解答一下。谢谢

区别是,你没按照老师的代码来,老师用的是:

 opts = webdriver.ChromeOptions()
 opts.debugger_address = "127.0.0.1:9222"

不清楚你的debugging_address是怎么来的。

:joy: 我也太粗心了,debugging_address应该是编译器带出来的,中午我好好看看反思反思