python测试-企业级测试框架

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 unittest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager


def 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 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,"商品编辑成功。")