python+selenium實現web自動化


本文為博主原創文章,可以轉載,但是轉載時必須在文首注明原文鏈接。 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.選擇定位元素的方式也很重要
'''


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM