web用户管理、新闻管理的增删改查

  • 测试启动类(用户)
  • 测试启动类(新闻)
  • 测试方法类

测试启动类(用户)

from selenium import webdriver
from selenium. webdriver.support.ui import WebDriverWait
from selenium. webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
import common_func as cf
import pytestuser_name="李大力"
login_account="110"
login_pwd="woji"
mobile="15778206691"
address="北京三里屯"
user_role="管理员"url = "http://localhost:8080/test/"
options = webdriver.ChromeOptions()
prefs = {"credentials_enable_service": False,"profile.password_manager_enabled": False}
options.add_experimental_option("prefs", prefs)
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument("disable-infobars")
driver = webdriver.Chrome(chrome_options=options)login_obj = cf.CLogin(driver)
login_obj.navigator(url, "zz", "1")
# login_obj.test_del_user(driver)
login_obj.user_check(driver, user_name, login_account, login_pwd, mobile, address, user_role)

测试启动类(新闻)

from selenium import webdriver
from selenium. webdriver.support.ui import WebDriverWait
from selenium. webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
import common_func as cf
import pytest#导入模块
import pymysql
#建立连接
connect = pymysql.connect(user='root',    # 用户名password='wojiaojiaoshi',   # 密码:这里一定要注意123456是字符串形式host='localhost',    # 指定访问的服务器,本地服务器指定“localhost”,远程服务器指定服务器的ip地址database='iss_test',   # 数据库的名字port= int("0619"),            # 指定端口号,范围在0-65535charset='utf8',    # 数据库的编码方式
)# 创建游标对象
cursor = connect.cursor()  # cursor当前的程序到数据之间的链接管道
# 组装sql语句,需要查询的MySQL语句
sql = 'select * from test_data;'
# 执行sql语句
cursor.execute(sql)
# 处理结果
# 获取一条数据
one = cursor.fetchone()  # 获取当前查询结果第一条数据
print(one)
print(one[0])
print(one[1])
# 获取多条数据 传入需要获取的数据的条数
# many = cursor.fetchmany(3)  # 获取当前查询结果前3条数据
# print(many)
# 获取所有数据
all = cursor.fetchall()
# 输出获取到的数据的数据类型
# print(all)
# print(type(all))  # <class 'tuple'>结果是数组# 逐条输出获取到的数据类型及数据
for each in all:print(type(each), each)  # 单条数据依然是数组# 获取数据库表中列的参数
fields = cursor.description  # 取得是字段的名字的一些详细信息是元组
# print(
#     fields)  # (('id', 3, None, 11, 11, 0, False), ('create_user_id', 3, None, 11, 11, 0, True), ('create_date', 12, None, 19, 19, 0, True)
# head = []
# # 或取数据库中表头
# for field in fields:
#     head.append(field[0])  # 只取元组下标为零的即字段名字
# print(head)# 6.关闭所有的连接
# 关闭游标
cursor.close()
# 关闭数据库
connect.close()url = "http://localhost:8080/test/"
options = webdriver.ChromeOptions()
#禁止使用浏览器的密码保存
prefs = {"credentials_enable_service": False,"profile.password_manager_enabled": False}
options.add_experimental_option("prefs", prefs)
#设置免检测(开发者模式)
options.add_experimental_option('excludeSwitches', ['enable-automation'])
#禁用浏览器正在被自动化程序控制的提示
options.add_argument("disable-infobars")
driver = webdriver.Chrome(chrome_options=options)login_obj = cf.CLogin(driver)
login_obj.navigator(url, one[1], one[2])
# login_obj.func1(driver)
# login_obj.func2(driver)
login_obj.test_del_news()
# login_obj.test_modify_news()

测试方法类

import time
from selenium import webdriver
from selenium. webdriver.support.ui import WebDriverWait
from selenium. webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
import common_func as cf
import importlib, sys
import unittest
import os
import  re
# sys.path.append(os.path.dirname(os.path.abspath(__file__)))#导入模块
import pymysql
#建立连接
connect = pymysql.connect(user='root',    # 用户名password='wojiaojiaoshi',   # 密码:这里一定要注意123456是字符串形式host='localhost',    # 指定访问的服务器,本地服务器指定“localhost”,远程服务器指定服务器的ip地址database='iss_test',   # 数据库的名字port= int("0619"),            # 指定端口号,范围在0-65535charset='utf8',    # 数据库的编码方式
)# 创建游标对象
cursor = connect.cursor()  # cursor当前的程序到数据之间的链接管道
# 组装sql语句,需要查询的MySQL语句
sql = 'select * from test_data;'
# 执行sql语句
cursor.execute(sql)
# 处理结果
# 获取一条数据
one = cursor.fetchone()  # 获取当前查询结果第一条数据
print(one)
print(one[0])
print(one[1])
# 获取多条数据 传入需要获取的数据的条数
# many = cursor.fetchmany(3)  # 获取当前查询结果前3条数据
# print(many)
# 获取所有数据
all = cursor.fetchall()
# 输出获取到的数据的数据类型
# print(all)
# print(type(all))  # <class 'tuple'>结果是数组# 逐条输出获取到的数据类型及数据
for each in all:print(type(each), each)  # 单条数据依然是数组# 获取数据库表中列的参数
fields = cursor.description  # 取得是字段的名字的一些详细信息是元组
# print(
#     fields)  # (('id', 3, None, 11, 11, 0, False), ('create_user_id', 3, None, 11, 11, 0, True), ('create_date', 12, None, 19, 19, 0, True)
# head = []
# # 或取数据库中表头
# for field in fields:
#     head.append(field[0])  # 只取元组下标为零的即字段名字
# print(head)# 6.关闭所有的连接
# 关闭游标
cursor.close()
# 关闭数据库
connect.close()title_txt=one[4]
news_text=one[5]
img_file=one[6]
autoitpath=one[7]
user_name="lilin"
login_account="110"
login_pwd="woji"
mobile="15778206691"
address="北京三里屯"
user_role="管理员"
taget_title="新闻就是新闻"
modify_text="新闻不是新闻吗?"
target_name="李大力"
class CLogin:def __init__(self, driver):self.driver = driver# 导航到指定的网页地址def navigator(self, url, username, password):self.driver.get(url)# 页面最大化self.driver.maximize_window()# time.sleep(5)ipt_user = self.driver.find_element_by_css_selector("#username")#输入用户名信息ipt_user.send_keys(username)try:ipt_pwd = self.driver.find_element_by_css_selector("#password")except:ipt_pwd = None#输入密码信息ipt_pwd.send_keys(password)time.sleep(1)btn_login = self.driver.find_element_by_css_selector('#loginForm > div.form-group.text-center.m-t-40 > div > button')WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#loginForm > div.form-group.text-center.m-t-40 > div > button")))# 鼠标的焦点转移到登录按钮webdriver.ActionChains(self.driver).move_to_element(btn_login).perform()btn_login.click()self.driver.implicitly_wait(2)def func1(self, url):# 等待左边的工具条上“新闻列表”按钮激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(2) > ul > li:nth-child(1) > a")))lbl_news = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(2) > ul > li:nth-child(1) > a")lbl_news.click()WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#btn_upload > span")))btn_add_news = self.driver.find_element_by_css_selector("#btn_upload > span")btn_add_news.click()def func2(self, url):list_type = Select(self.driver.find_element_by_css_selector("#type"))list_type.select_by_index(1)ipt_title = self.driver.find_element_by_css_selector("#title")ipt_title.send_keys(str(title_txt))frame_elm = self.driver.find_element_by_css_selector(" #cke_1_contents > iframe")s_html = '<p>%s</p>' % news_textjs_script = 'arguments[0].innerHTML="%s"' % s_htmlself.driver.switch_to.frame(frame_elm)rich_text = self.driver.find_element_by_css_selector('body > p')self.driver.execute_script(js_script, rich_text)self.driver.switch_to.parent_frame()# 点击图片上传btn_img = self.driver.find_element_by_css_selector("#cke_25 > span.cke_button_icon.cke_button__image_icon")btn_img.click()self.driver.switch_to.active_element# 点击上传tab页tab_upload = self.driver.find_element_by_css_selector("#cke_Upload_133")tab_upload.click()self.driver.implicitly_wait(2)frame_ipt_file = self.driver.find_element_by_css_selector("iframe.cke_dialog_ui_input_file")self.driver.switch_to.frame(frame_ipt_file)js_script = "arguments[0].click()"btn_file = self.driver.find_element_by_name("upload")self.driver.execute_script(js_script, btn_file)self.driver.switch_to.parent_frame()# 需要上传导入的模板文件名称cur_dir = os.path.dirname(os.path.abspath(__file__))import_file = os.path.join(os.path.join(cur_dir, "resources"), img_file)print("上传的文件:%s" % import_file)# 通过键盘录入当前需要输入的文件路径base_obj = cf.CBase_Func()base_obj.type_filepath(import_file)self.driver.switch_to.active_elementself.driver.implicitly_wait(2)btn_uploadimg = self.driver.find_element_by_link_text("上传到服务器")time.sleep(1)btn_uploadimg.click()time.sleep(1)self.driver.implicitly_wait(1)btn_cfm = self.driver.find_element_by_link_text("确定")btn_cfm.click()self.driver.implicitly_wait(1)# 整个新闻编辑结束后最终提交按钮btn_submit = self.driver.find_element_by_css_selector("#wrapper > div.content-page > div > div.container > div > div.panel-body > div > button.btn.btn-primary.waves-effect.waves-light")btn_submit.click()def test_add_user(self,url):# 等待左边的工具条上“系统管理”按钮激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(5) > a > span.pull-right > i")))lbl_sys = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(5) > a > span.pull-right > i")lbl_sys.click()self.driver.implicitly_wait(1)# 等待“系统管理”下面的子菜单“用户管理”激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(5) > ul > li:nth-child(1) > a")))lbl_users = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(5) > ul > li:nth-child(1) > a")lbl_users.click()self.driver.implicitly_wait(1)WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#btn_upload > span")))btn_add_news = self.driver.find_element_by_css_selector("#btn_upload > span")btn_add_news.click()self.driver.switch_to.active_elementipt_username = self.driver.find_element_by_css_selector('#insertUserForm > div:nth-child(1) > div > input')ipt_username.send_keys(str(user_name))ipt_account = self.driver.find_element_by_css_selector('#insertUserForm > div:nth-child(2) > div > input')ipt_account.send_keys(str(login_account))ipt_pwd = self.driver.find_element_by_css_selector('#insertUserForm > div:nth-child(3) > div > input')ipt_pwd.send_keys(str(login_pwd))ipt_mobile = self.driver.find_element_by_css_selector('#insertUserForm > div:nth-child(4) > div > input')ipt_mobile.send_keys(str(mobile))ipt_address = self.driver.find_element_by_css_selector('#insertUserForm > div:nth-child(5) > div > input')ipt_address.send_keys(str(address))lbl_roles = self.driver.find_elements_by_css_selector('#insertUserForm > div:nth-child(6) > div > div > label')icon_roles = self.driver.find_elements_by_css_selector('#insertUserForm > div:nth-child(6) > div > div > input[type=radio]')for lbl in lbl_roles:print(lbl.text)if lbl.text == user_role:icon_roles[lbl_roles.index(lbl)].click()breakbtn_submit = self.driver.find_element_by_css_selector('#insertUserModal > div > div > div.modal-footer > button.btn.btn-primary.waves-effect.waves-light')btn_submit.click()def test_submit_role(self):lbl_roles = self.driver.find_elements_by_css_selector('#insertUserForm > div:nth-child(6) > div > div > label')icon_roles = self.driver.find_elements_by_css_selector('#insertUserForm > div:nth-child(6) > div > div > input[type=radio]')for lbl in lbl_roles:if lbl.text == user_role:icon_roles[lbl_roles.index(lbl)].click()breakbtn_submit = self.driver.find_element_by_css_selector('#insertUserModal > div > div > div.modal-footer > button.btn.btn-primary.waves-effect.waves-light')btn_submit.click()def test_del_user(self,url):# 等待左边的工具条上“系统管理”按钮激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(5) > a > span.pull-right > i")))lbl_sys = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(5) > a > span.pull-right > i")lbl_sys.click()self.driver.implicitly_wait(2)# 等待“系统管理”下面的子菜单“用户管理”激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(5) > ul > li:nth-child(1) > a")))lbl_users = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(5) > ul > li:nth-child(1) > a")lbl_users.click()self.driver.implicitly_wait(1)WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.pagination-info")))flag_del = Truewhile flag_del is True:flag_del = self.del_user()def del_user(self):flag = FalseWebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'span.pagination-info')))span_summary = self.driver.find_element_by_css_selector('span.pagination-info')total_record = span_summary.textmatchObj = re.match(r'(.+)\s(\d+)\s(.+)', total_record, re.M | re.I)pages = -1if matchObj:total_users = int(matchObj[2])print(total_users)if total_users % 10 == 0:pages = total_users // 10else:pages = total_users // 10 + 1cur_page_lbl = self.driver.find_element_by_css_selector(" li.page-item.active > a.page-link")# a = int(cur_page_lbl.text)a = 1while a < pages + 1:WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'table#userTable>tbody>tr > td:nth-child(4)')))topics = self.driver.find_elements_by_css_selector('table#userTable>tbody>tr > td:nth-child(4)')icon_del = self.driver.find_elements_by_css_selector('table#userTable > tbody >tr > td:nth-child(8) > a:nth-child(2)')for topic in topics:if topic.text == target_name:icon_del[topics.index(topic)].click()self.driver.implicitly_wait(1)btn_cfm = self.driver.find_element_by_css_selector("body > div.swal-overlay.swal-overlay--show-modal > div > div.swal-footer > div:nth-child(2) > button")btn_cfm.click()flag = Trueself.driver.implicitly_wait(3)WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'table#userTable>tbody>tr > td:nth-child(4)')))return flagif pages > 1 & a < pages:self.page_turning(1)self.driver.implicitly_wait(4)a += 1return flagdef user_check(self,url, name, account_str, pwd, mobile, address, role):# 等待左边的工具条上“系统管理”按钮激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(5) > a > span.pull-right > i")))lbl_sys = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(5) > a > span.pull-right > i")lbl_sys.click()self.driver.implicitly_wait(2)# 等待“系统管理”下面的子菜单“用户管理”激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(5) > ul > li:nth-child(1) > a")))lbl_users = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(5) > ul > li:nth-child(1) > a")lbl_users.click()self.driver.implicitly_wait(1)WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.pagination-info")))span_summary = self.driver.find_element_by_css_selector('span.pagination-info')matchObj = re.match(r'(.+)\s(\d+)\s(.+)', span_summary.text, re.M | re.I)# matchObj = re.match(r'(.+)\s(\d+)\s(.+)', total_record, re.M | re.I)pages = -1if matchObj:total_users = int(matchObj[2])print(total_users)if total_users % 10 == 0:pages = total_users // 10else:pages = total_users // 10 + 1a = 1while a < pages + 1:WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '#userTable > tbody > tr > td:nth-child(3)')))accounts = self.driver.find_elements_by_css_selector('#userTable > tbody > tr > td:nth-child(3)')icon_modify = self.driver.find_elements_by_css_selector('#userTable > tbody > tr > td:nth-child(8) > a:nth-child(1) > i')for account in accounts:if account.text == account_str:icon_modify[accounts.index(account)].click()self.driver.switch_to.active_elementself.driver.implicitly_wait(5)ipt_username = self.driver.find_element_by_css_selector('#nickname')self.driver.implicitly_wait(1)assert ipt_username.get_attribute('value') == nameele_account = self.driver.find_element_by_css_selector('#username')assert ele_account.text == account_stript_pwd = self.driver.find_element_by_css_selector('#password')assert ipt_pwd.get_attribute('value') == pwdipt_mobile = self.driver.find_element_by_css_selector('#phone')assert ipt_mobile.get_attribute('value') == mobileipt_address = self.driver.find_element_by_css_selector('#address')assert ipt_address.get_attribute('value') == addresslbl_roles = self.driver.find_elements_by_css_selector('#updateUserForm > div:nth-child(7) > div > div > label')icon_roles = self.driver.find_elements_by_css_selector('#updateUserForm > div:nth-child(7) > div > div > input[type=radio]')for lbl in lbl_roles:if lbl.text == role:print(lbl.text)assert icon_roles[lbl_roles.index(lbl)].is_selected() == Truebreakreturn Trueif pages > 1 & a < pages:self.page_turning(1)self.driver.implicitly_wait(2)a += 1return Falsedef test_del_news(self):# 等待左边的工具条上“新闻列表”按钮激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(2) > ul > li:nth-child(1) > a")))lbl_news = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(2) > ul > li:nth-child(1) > a")lbl_news.click()flag_del = Truewhile flag_del is True:flag_del = self.del_news()def del_news(self):flag = FalseWebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'span.pagination-info')))span_summary = self.driver.find_element_by_css_selector('span.pagination-info')total_record = span_summary.textmatchObj = re.match(r'(.+)\s(\d+)\s(.+)', total_record, re.M | re.I)pages = -1if matchObj:total_users = int(matchObj[2])print(total_users)if total_users % 10 == 0:pages = total_users // 10else:pages = total_users // 10 + 1cur_page_lbl = self.driver.find_element_by_css_selector(" li.page-item.active > a.page-link")# a = int(cur_page_lbl.text)a = 1while a < pages + 1:WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'table#newsTable>tbody>tr > td:nth-child(4)')))topics = self.driver.find_elements_by_css_selector('table#newsTable>tbody>tr > td:nth-child(4)')icon_del = self.driver.find_elements_by_css_selector('table#newsTable > tbody >tr > td:nth-child(7) > a:nth-child(3)')for topic in topics:if topic.text == taget_title:icon_del[topics.index(topic)].click()self.driver.implicitly_wait(1)btn_cfm = self.driver.find_element_by_css_selector("body > div.swal-overlay.swal-overlay--show-modal > div > div.swal-footer > div:nth-child(2) > button")btn_cfm.click()flag = Trueself.driver.implicitly_wait(3)WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'table#newsTable>tbody>tr > td:nth-child(4)')))return flagif pages > 1 & a < pages:self.page_turning2(1)self.driver.implicitly_wait(4)a += 1return flagdef test_modify_news(self):# 等待左边的工具条上“新闻列表”按钮激活WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sidebar-menu > ul > li:nth-child(2) > ul > li:nth-child(1) > a")))lbl_news = self.driver.find_element_by_css_selector("#sidebar-menu > ul > li:nth-child(2) > ul > li:nth-child(1) > a")lbl_news.click()self.driver.implicitly_wait(2)WebDriverWait(self.driver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.pagination-info")))span_summary = self.driver.find_element_by_css_selector('span.pagination-info')flag_mod = self.modify_news()def modify_news(self):flag = Falsespan_summary = self.driver.find_element_by_css_selector('span.pagination-info')total_record = span_summary.textmatchObj = re.match(r'(.+)\s(\d+)\s(.+)', total_record, re.M | re.I)pages = -1if matchObj:total_users = int(matchObj[2])if total_users % 10 == 0:pages = total_users // 10else:pages = total_users // 10 + 1a = 1while a < pages + 1:WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'table#newsTable>tbody>tr > td:nth-child(4)')))topics = self.driver.find_elements_by_css_selector('table#newsTable>tbody>tr > td:nth-child(4)')icons_modify = self.driver.find_elements_by_css_selector('table#newsTable>tbody>tr > td:nth-child(7) > a:nth-child(2)')count = 0while count < len(topics):WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'table#newsTable>tbody>tr > td:nth-child(4)')))topics = self.driver.find_elements_by_css_selector('table#newsTable>tbody>tr > td:nth-child(4)')icons_modify = self.driver.find_elements_by_css_selector('table#newsTable>tbody>tr > td:nth-child(7) > a:nth-child(2)')for topic in topics:temp_str = topic.textif topics.index(topic) < count:continueif topics.index(topic) != count:count += 1if temp_str == taget_title:icons_modify[topics.index(topic)].click()self.driver.implicitly_wait(1)ipt_title = self.driver.find_element_by_css_selector("#title")ipt_title.clear()self.driver.implicitly_wait(2)ipt_title.send_keys(str(temp_str + "bingo"))frame_elm = self.driver.find_element_by_css_selector(" #cke_1_contents > iframe")s_html = '<p>%s</p>' % modify_textjs_script = 'arguments[0].innerHTML="%s"' % s_htmlself.driver.switch_to.frame(frame_elm)rich_text = self.driver.find_element_by_css_selector('body > p')self.driver.execute_script(js_script, rich_text)self.driver.switch_to.parent_frame()# 整个新闻编辑结束后最终提交按钮btn_submit = self.driver.find_element_by_css_selector("#wrapper > div.content-page > div > div.container > div > div.panel-body > div > button.btn.btn-primary.waves-effect.waves-light")btn_submit.click()self.driver.implicitly_wait(3)# 新闻修改完成后,需要重新翻页到当前页self.page_turning(a - 1)self.driver.implicitly_wait(3)breakif count == len(topics) - 1:count = 999if pages > 1 & a < pages:self.page_turning(1)self.driver.implicitly_wait(5)a += 1return flag# 完成翻页的功能def page_turning(self, times):for i in range(0, times):WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.page-item.page-next > a.page-link")))icon_pagelink = self.driver.find_element_by_css_selector("li.page-item.page-next > a.page-link")icon_pagelink.click()self.driver.implicitly_wait(3)WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "table#newsTable>tbody>tr > td:nth-child(4)")))def page_turning2(self, times):for i in range(0, times):WebDriverWait(self.driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.page-item.page-next > a.page-link")))icon_pagelink = self.driver.find_element_by_css_selector("li.page-item.page-next > a.page-link")icon_pagelink.click()self.driver.implicitly_wait(3)WebDriverWait(self.driver, 15).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "table#userTable>tbody>tr > td:nth-child(4)")))class CBase_Func:def type_filepath(self,filepath):time.sleep(3)# sys.setdefaultencoding('gb18030')cur_dir = os.path.dirname(os.path.abspath(__file__))autoitexe = os.path.join(cur_dir, autoitpath)cmdline = u'upload.exe {0}'.format(str(filepath))# 调用AutoIt打包的Exe文件上传图片、视频、文档等相关的附属文件os.chdir(cur_dir)os.system(cmdline)# sys.setdefaultencoding('utf-8')

自动化脚本测试代码参考相关推荐

  1. java ui自动化测试脚本,如何用Airtest编写UI自动化脚本(示例代码)

    前言 游戏并不像app一样直接把渲染树节点暴露出来,这就造成游戏UI自动化在元素定位上的不方便性,不过依赖airtest的图片识别,我们可以直接跳过元素检查,以图片对比的形式进行自动化,虽然效率可能会 ...

  2. perl6检测网站CMS脚本(测试代码)

    代码如下: use HTTP::UserAgent; use JSON::Tiny;my $check-url = 'www.baidu.com'; #say @*ARGS[0]; #检测命令行参数 ...

  3. python自动化脚本是什么意思_Python 自动化脚本学习(一)

    Python 基础 命令行:在http://www.python.org安装python3,Mac下输入python3进入命令行 整数,浮点数,字符串类型:-1,0.1,'game' 字符串连接和复制 ...

  4. 第一个python自动化脚本

    第一个python自动化脚本-测试页面pageid # -*- coding : utf-8 -*- __authon__ = 'test' import requests import xlrd f ...

  5. 自动化脚本编程框架(代码篇)

    书接上文,本篇以C语言为例,介绍一下自动化脚本的编程框架(篇末有整体代码). 框架的中心思想: 以函数指针形式,从脚本数组中按顺序依次执行脚本函数并判断执行结果. 若判断结果执行正确则指针向后偏移到下 ...

  6. 防止删库悲剧发生,这里有个Bash脚本测试框架,危险代码一测便知

    萧箫 发自 凹非寺  量子位 报道 | 公众号 QbitAI 想要清理文件夹内部分冗余文件,结果误删了同事刚合的代码? (例如,在rm -rf /usr/bin/test的/usr后面加了个空格,结果 ...

  7. android冒烟测试自动化,自动化冒烟测试脚本应当遵循的原则

    自动化冒烟测试脚本应当遵循的原则 发表于:2009-06-29来源:作者:点击数: 自动化冒烟测试脚本应当遵循的原则: 1.覆盖主要功能: 冒烟测试不是 系统测试 或 集成测试 ,所以不需要面面俱到, ...

  8. 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...

    在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例.就像功能测试一样,当测试人员做了一些操作之后必然会判断实际结果是否等于预期结果,只不过,这个 ...

  9. 【云真机平台】稳定性测试自动化脚本

    前面文章中针对云真机平台稳定性设计了[云真机平台]平台稳定性测试方案,接下来实现具体的脚本进行稳定性测试 一.selenium IDE录制 许久没有写UI自动化,倍感陌生哈哈,那么使用selenium ...

最新文章

  1. CentOS+Nginx+uWSGI+Python多站点环境搭建
  2. 打开一个解决方案时弹出“项目所需的应用程序未安装,确保已安装项目类型(.csproj)的应用程序”问题的解决方案
  3. 巧用Excel 轻松转换人民币大小写
  4. 2560介绍_炒股高手收益翻10倍,只因妙用这一招2560战法,看了都不亏了
  5. urllib库的使用
  6. 工作221:控制弹出框不全屏
  7. 【OpenCV 例程200篇】94. 算术平均滤波器
  8. 期刊投稿状态_论文投稿,你不知道的那些事
  9. 大数据时代了解一些问题
  10. 2013年微软编程之美大赛初赛第二题(博客园居然可以插入代码!!)
  11. 图像局部特征(四)--FAST-ER角点检测子
  12. GridView, DataGrid 中,DataFormatString语法汇总
  13. 伍德里奇计量经济学导论之计算机操作题的R语言实现(多元回归:估计)
  14. Java 标准开发包_JDK 9系列全套官方下载链接
  15. python主函数怎么写_类中的Python主函数
  16. linux怎样判断vim是否安装上,Linux系统中vim的安装
  17. 把视频文件放在服务器上,生成链接供外部访问
  18. 如何给IBM X3650 M4 安装CentOS8.3.2011
  19. 推荐 33 个 IDEA 最牛配置!
  20. H3C路由器交换机模拟器

热门文章

  1. 垃圾发电厂过磅系统是怎么运作的
  2. java判断麻将听牌_和牌看听:麻将听牌种类大全
  3. 刘润、陈果、董小英、朋新宇、钱大群、付晓岩等50余位专家力荐,《精益数据方法论》重磅上市!...
  4. 现在完成时、过去完成时、完成进行时
  5. 微信论坛交流小程序系统毕业设计毕设(8)毕业设计论文模板
  6. php移动端url,织梦移动端跟PC端URL问题。 - 搜外SEO问答
  7. 软件测试学习心得-6
  8. Luogu P3853 路标设置
  9. ssm基于Java的微小企业人事管理系统的设计与实现毕业设计源码231012
  10. 当面试官问“你有什么要问我的吗”时,应该说什么?