python写web自动化_python+selenium实现web自动化

以下代码实现的是自动点击系统菜单并校验返回结果:

# -*- 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.选择定位元素的方式也很重要

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值