Selenium57-使用fixture

第四版使用fixture

  • test_后台_双创_基础设置_赛区管理_添加赛区_case_v4_1.py
  • 使用fixture来做前置和后置处理。
  • 使用yield来分隔前置后后置处理步骤。

定义prepare_and_exit方法

  • 定义prepare_and_exit方法:实现前置/后置操作
@pytest.fixture(scope='function', autouse=True)
def prepare_and_exit(self):
driver = webdriver.Firefox()
driver.implicitly_wait(15)
driver.get("http://192.168.58.134:8080/integration/manage")
sleep(2)
# yield前实现前置操作
driver.find_element(By.ID, "userName").clear()
driver.find_element(By.ID, "userName").send_keys("root")
driver.find_element(By.ID, "password").clear()
driver.find_element(By.ID, "password").send_keys("12345678")
driver.find_element(By.XPATH, "//span[text()='登录']").click()
sleep(1)
driver.find_element(By.ID, "213").click() # 基础设置
WebDriverWait(driver, 20).until(
expected_conditions.presence_of_element_located((By.XPATH, "//div[@id='213']/img[@class='open']")))
driver.find_element(By.ID, "214").click() # 赛区管理
WebDriverWait(driver, 20).until(
expected_conditions.frame_to_be_available_and_switch_to_it((By.XPATH, "//iframe[@data-itemid='213']")))
# yield后实现后置操作
WebDriverWait(driver, 20).until_not(expected_conditions.presence_of_element_located((By.ID, "Loading")))
self.driver=driver
yield
self.driver.switch_to.default_content()
self.driver.find_element(By.CLASS_NAME,"退出").click()
sleep(2)
self.driver.quit()

自动使用fixture

  • 删除原来的前置方法login_to_add_division_page
  • 删除原来的后置方法exit_and_close_browser
  • 测试方法自动执fixture里的前置和后置处理。
def test_add_division(self,division_name,message):
driver = self.driver
……
assert self.is_element_present(By.XPATH,f"//td[@field='name']/div[text()='{division_name}']")

调试第四版第一子版本

  • ,查看结果

作者:暄总-tester