测试 python测试-企业级测试框架 智汇君 2025-01-17 python-selenium 启动chrome 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import unittestfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom webdriver_manager.chrome import ChromeDriverManagerdef add (a,b ): return a+b class MyTestCase (unittest.TestCase): def test_bf (self ): a = 1 +1 b = add(1 ,1 ) self .assertEqual(a,b) def test_baidu (self ): driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("https://baidu.com" ) self .assertIn("百度" ,driver.title) driver.quit() if __name__ == "__main__" : unittest.main()
方法 driver.title
禁止chrome关闭 global driver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
框架处理frame和iframe 有些界面是处在不同的框架中的,每个框架相当于不同的房间,需要进出房操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import time from selenium import webdriver from selenium.webdriver.common.by import By from test_封装 import MyUnit class TestDemo(MyUnit): def test_login(self): driver = webdriver.Chrome() driver.get("xxx") driver.find_element(By.NAME,"username") driver.find_element(By.NAME,"password") driver.find_element(By.XPATH,"//input[@value='xxx']").click() time.sleep(3) self.assertIn("index.php",driver.current_url) # 进入框架 driver.switch_to.frame('header-frame') self.assertIn('退出',driver.page_source) time.sleep(3) # 退出框架 driver.switch_to.default_content() # 进入框架 driver.switch_to.frame('menu-frame') driver.find_element(By.LINK_TEXT,"商品列表").click() time.sleep(3) # 退出框架 driver.switch_to.default_content() # 进入框架 driver.switch_to.frame('main-frame') # 定位一组元素(当元素完全一致时) ele_list = driver.find_elements(By.XPATH,"//img[@src='images/icon_edit.gif']") ele_list[0].click() driver.find_element(By.XPATH,"//input[@value=' 确定 ']").click() text = driver.find_element(By.XPATH,"//td[@style='font-size: 14px; font-weight: bold']").text self.assertEqual(text,"商品编辑成功。")
隐式等待 是 Selenium WebDriver 中的一个隐式等待 设置
driver.implicitly_wait()
页面倒计时跳转问题 网页中出现多少秒后跳转另一个页面的情况,这时编写代码时很难看清网页结构,解决:
倒计时页面:f12->source->暂停
实例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom test_封装 import MyUnitclass TestDemo (MyUnit ): def test_login (self ): driver = webdriver.Chrome() driver.get("xxx" ) driver.find_element(By.NAME,"username" ) driver.find_element(By.NAME,"password" ) driver.find_element(By.XPATH,"//input[@value='xxx']" ).click() time.sleep(3 ) self .assertIn("index.php" ,driver.current_url) driver.switch_to.frame('header-frame' ) self .assertIn('退出' ,driver.page_source) time.sleep(3 ) driver.switch_to.default_content() driver.switch_to.frame('menu-frame' ) driver.find_element(By.LINK_TEXT,"商品列表" ).click() time.sleep(3 ) driver.switch_to.default_content() driver.switch_to.frame('main-frame' ) ele_list = driver.find_elements(By.XPATH,"//img[@src='images/icon_edit.gif']" ) ele_list[0 ].click() driver.find_element(By.XPATH,"//input[@value=' 确定 ']" ).click() text = driver.find_element(By.XPATH,"//td[@style='font-size: 14px; font-weight: bold']" ).text self .assertEqual(text,"商品编辑成功。" )