本文為博主原創文章,可以轉載,但是轉載時必須在文首注明原文鏈接。 https://www.cnblogs.com/fppblog/p/11137000.html
以下代碼實現的是自動點擊系統菜單並校驗返回結果:
# -*- coding: UTF-8 -*-
from selenium import webdriver
import time
import unittest
import requests
class LinghangTest(unittest.TestCase):
#測試開始前登陸一次
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome(r"D:\IntelliJ IDEA 15.0\workspace\xx\driver\chromedriver.exe")
cls.driver.maximize_window()
cls.driver.implicitly_wait(30)
cls.base_url = "http://XXX.XXXXXX.com"
cls.verificationErrors = []
cls.accept_next_alert = True
cls.username = 'xxx'
cls.password = 'xxx'
#測試結束后關閉網頁
@classmethod
def tearDownClass(cls):
# cls.driver.refresh()
# cls.assertEqual([], cls.verificationErrors)
cls.driver.quit()
#測試登錄功能
def test_1Login(self):
driver = self.driver
driver.find_element_by_name("username").clear()
driver.find_element_by_name("username").send_keys(self.username)
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys(self.password)
# driver.find_element_by_id("checkCode").clear()
# driver.find_element_by_id("checkCode").send_keys("123456")
driver.find_element_by_id('login_submit').click()
time.sleep(5)
driver.get(self.base_url)
resp = requests.get(self.base_url, timeout=5)
self.code = resp.status_code
print(self.driver.title)
print(self.code)
self.assertEqual(200, self.code, msg=None)
#測試每個菜單點擊后是否正常返回,三層菜單,逐個點擊
def test_Customer(self):
#先獲取當前頁面第一層菜單的個數,給循環使用
level0s = self.driver.find_elements_by_xpath('//*[@id="leftTreeNav"]/li')
print("num of level0: %d" % len(level0s))
for i in range(1, len(level0s)):
#每次循環開始前需要再次獲取當前頁面第一層菜單,因為每次點擊后頁面元素會發生變化
level0s = self.driver.find_elements_by_xpath('//*[@id="leftTreeNav"]/li')
print("level00000: %s" % level0s[i].text)
level0s[i].click()
url = self.driver.current_url
print(u"獲取當前頁面url :%s" % url)
resp = requests.get(url, timeout=5)
self.code = resp.status_code
self.assertEqual(200, self.code, msg=None)
print("第一層----------------------------------------------------------------------------")
#點擊后獲取當前頁面的第二層菜單值,通過第一層菜單id定位
level0s = self.driver.find_elements_by_xpath('//*[@id="leftTreeNav"]/li')
level0id = level0s[i].get_attribute('id')
print("level0id: %s" % level0id)
level1s = self.driver.find_elements_by_xpath("//*[@id = '" + level0id + "']/ul/li")
time.sleep(3)
print("num of level0: %d" % len(level0s))
print("num of level1: %d" % len(level1s))
#同理第一次循環
for j in range(0, len(level1s)):
level1s = self.driver.find_elements_by_xpath("//*[@id = '" + level0id + "']/ul/li")
print("level11111: %s" % level1s[j].text)
level1s[j].click()
url = self.driver.current_url
print(u"獲取當前頁面url :%s" % url)
resp = requests.get(url, timeout=5)
self.code = resp.status_code
self.assertEqual(200, self.code, msg=None)
level1s = self.driver.find_elements_by_xpath("//*[@id = '" + level0id + "']/ul/li")
level1id = level1s[j].get_attribute('id')
print("level1id: %s" % level1id)
level2s = self.driver.find_elements_by_xpath("//*[@id = '" + level1id + "']/ul/li")
time.sleep(3)
print("num of level2: %d" % len(level2s))
for p in range(0, len(level2s)):
level2s = self.driver.find_elements_by_xpath("//*[@id = '" + level1id + "']/ul/li")
print("level22222: %s" % level2s[p].text)
level2s[p].click()
time.sleep(3)
url = self.driver.current_url
print(u"獲取當前頁面url :%s" % url)
resp = requests.get(url, timeout=5)
self.code = resp.status_code
self.assertEqual(200, self.code, msg=None)
if __name__ == "__main__":
unittest.main()
'''注意事項:
1.每次點擊后頁面會刷新,在下次使用相同的元素時需要重新定位
2.選擇定位元素的方式也很重要
'''