在讲了第一次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()
最后虽然是可以正常运行了,但是自己还是不是很清楚两种定义方式哪里不一样,还是我的第一种有错误的地方,希望路过的大神帮忙解答一下。谢谢