login

#!/usr/bin/python

-- coding: UTF-8 --

from selenium import webdriver
import unittest
import sys
import os
import datetime
import random
import time
from HTMLTestRunnerCN import HTMLTestRunner

reload(sys)
sys.setdefaultencoding(‘utf8’)

def login():
TEST_URL = “http://192.168.20.9:8080/CoreBusinessServer/login.html”
# ID = “0597”
# a = “A200” + “-” + ID + time.strftime(’%Y%m%d’, time.localtime(time.time()))
# # print(a)
driver = start(TEST_URL)
# driver.find_element(“xpath”, ‘’’//[@id=“zeus”]/div[1]/span[1]/div[2]/div/span[1]/input’’’).send_keys(str(a))
# driver.find_element(“xpath”, ‘’’//
[@id=“zeus”]/div[1]/span[1]/div[2]/div/span[1]/img’’’).click()
# time.sleep(3)
return driver

def start(url):
“”"
启动浏览器
:param url: 测试地址
:param driver_name: 在启动时设置浏览器的类型
:return:
“”"
driver_name = “Chrome”
if driver_name == “Firefox”:
driver = webdriver.Firefox()
elif driver_name == “Ie”:
driver = webdriver.Ie()
else:
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get(url)
driver.maximize_window()
return driver

OVER_TIME = 5
TEST_URL = “http://192.168.20.9:8080/CoreBusinessServer/login.html”
index = 1

class Driver(object):
def new(cls, *args, **kw):
“”"
使用单例模式将类设置为运行时只有一个实例,在其他Python类中使用基类时,
可以创建多个对象,保证所有的对象都是基于一个浏览器
“”"
if not hasattr(cls, ‘_instance’):
orig = super(Driver, cls)
cls._instance = orig.new(cls, *args, **kw)
return cls._instance

def start(self, url= "http://192.168.20.9:8080/CoreBusinessServer/login.html", driver_name="Chrome"):
	"""
	启动浏览器
	:param url: 测试地址
	:param driver_name: 在启动时设置浏览器的类型
	:return:
	"""
	if driver_name == "Firefox":
		self.driver = webdriver.Firefox()
	elif driver_name == "Ie":
		self.driver = webdriver.Ie()
	else:
		self.driver = webdriver.Chrome()
	self.driver.implicitly_wait(5)
	self.driver.get(url)
	self.driver.maximize_window()
	return self.driver

def get_url(self):
	"""返回浏览器的地址"""
	URL=self.driver.current_url
	return URL

def get_title(self):
	"""返回浏览器的标题"""
	title=self.driver.title
	return title


def close(self):
	self.driver.close()

def quit(self):
	u"""退出浏览器"""
	self.driver.quit()

# 跳转页面
def Jumpwebpage(self, page, time_wait=3):
	self.driver.get(self.Getwebpage(page))
	self.driver.maximize_window()

	if isinstance(time_wait, int):
		time.sleep(time_wait)

def Getwebpage(self, page):
	return R.ReadXmlData("%s.xml" % page, "page", 0, "url")

# 浏览器前进操作
def forward(self):
	self.driver.forward()

# 浏览器后退操作
def back(self):
	self.driver.back()

# 隐式等待
def wait(self, seconds):
	self.driver.implicitly_wait(seconds)

# 保存图片
def get_windows_img(self):
	"""
	在这里我们把file_path这个参数写死,直接保存到我们项目根目录的一个文件夹.\Screenshots下
	"""
	# file_path = os.path.dirname(os.path.abspath('.')) + '/screenshots/'
	file_path = os.getcwd() + '/screenshots/'
	# print file_path
	if os.path.exists(file_path):
		pass
	else:
		os.mkdir(file_path)
	rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
	screen_name = file_path + rq + '.png'
	try:
		self.driver.get_screenshot_as_file(screen_name)
	except NameError as e:
		self.get_windows_img()

def Current_handel(self):
	# 这时切换到新窗口
	all_handles = self.driver.window_handles
	for handle in all_handles:
		self.driver.switch_to.window(handle)
# by_id = "id"
# by_xpath = "xpath"
# by_link_text = "link text"
# by_partial_text = "partial link text"
# by_name = "name"
# by_tag_name = "tag name"
# by_class_name = "class name"
# by_css_selector = "css selector"
def find_element(self, by, value):
	"""
	这里添加了一个OVER_TIME作为查找元素的超时次数,根据系统的实际情况设置OVER_TIME的大小
	"""
	for i in range(OVER_TIME):
		try:
			return self.driver.find_element(by=by, value=value)
		except Exception, e:
			print e

def find_elements(self, by, value):
	"""与find_element一致"""
	for i in range(OVER_TIME):
		try:
			return self.driver.find_elements(by=by, value=value)
		except Exception, e:
			print e

def find_display_elements(self, by, value):
	"""
	查找状态为displayed的元素集合,当查找一类元素时,
	经常出现有些元素是不可见的情况,此函数屏蔽那些不可见的元素
	"""
	for i in range(OVER_TIME):
		try:
			elements = self.driver.find_elements(by=by, value=value)
			num = elements.__len__()
		except Exception, e:
			print e
			time.sleep(1)
		if num >= 1:
			break
	display_element = []
	# 将可见的元素放到列表中, 并返回
	for j in range(num):
		element = elements.__getitem__(j)
		if element.is_displayed():
			display_element.append(element)
	return display_element

def is_element_present(self, By, Value):
	"""判断元素是否存在"""
	try:
		self.driver.find_element(by=By, value=Value)
		return True
	except Exception, e:
		print e
		return False

# 输入内容方法
def Input(self, type, value, inputvalue):
	if type == "xpath":
		self.driver.find_element_by_xpath(value).send_keys(inputvalue)
	elif type == "class_name":
		self.driver.find_element_by_class_name(value).send_keys(inputvalue)
	elif type == "id":
		self.driver.find_element_by_id(value).send_keys(inputvalue)
	elif type == "name":
		self.driver.find_element_by_name(value).send_keys(inputvalue)
	elif type == "link_text":
		self.driver.find_element_by_link_text(value).send_keys(inputvalue)
	elif type == "partial_link_text":
		self.driver.find_element_by_partial_link_text(value).send_keys(inputvalue)

# 鼠标事件方法一
def Click(self, type, value):
	if type == "xpath":
		self.driver.find_element_by_xpath(value).click()
	elif type == "class_name":
		self.driver.find_element_by_class_name(value).click()
	elif type == "id":
		self.driver.find_element_by_id(value).click()
	elif type == "name":
		self.driver.find_element_by_name(value).click()
	elif type == "link_text":
		self.driver.find_element_by_link_text(value).click()
	elif type == "partial_link_text":
		self.driver.find_element_by_partial_link_text(value).click()

# 鼠标事件方法二
def Clear(self, type, value):
	if type == "xpath":
		self.driver.find_element_by_xpath(value).clear()
	elif type == "id":
		self.driver.find_element_by_id(value).clear()
	elif type == "name":
		self.driver.find_element_by_name(value).clear()
	elif type == "link_text":
		self.driver.find_element_by_link_text(value).clear()
	elif type == "partial_link_text":
		self.driver.find_element_by_partial_link_text(value).clear()

# 验证元素是否存在
def Check_element(self, type, value):
	if type == "xpath":
		self.driver.find_element_by_xpath(value)
	elif type == "id":
		self.driver.find_element_by_id(value)
	elif type == "name":
		self.driver.find_element_by_name(value)
	elif type == "link_text":
		self.driver.find_element_by_link_text(value)
	elif type == "partial_link_text":
		self.driver.find_element_by_partial_link_text(value)

# 获取子元素
def Select_child_elements(self, type, value1, value2):
	if type == "xpath":
		Select(self.driver.find_element_by_xpath(value1)).select_by_visible_text(value2)
	elif type == "id":
		Select(self.driver.find_element_by_id(value1)).select_by_visible_text(value2)
	elif type == "name":
		Select(self.driver.find_element_by_name(value1)).select_by_visible_text(value2)
	elif type == "link_text":
		Select(self.driver.find_element_by_link_text(value1)).select_by_visible_text(value2)
	elif type == "partial_link_text":
		Select(self.driver.find_element_by_partial_link_text(value1)).select_by_visible_text(value2)

# 获取输入框的值
def Get_attribute(self, type, value1, value2):
	if type == "xpath":
		Value = self.driver.find_element_by_xpath(value1).get_attribute(value2)
		return Value
	elif type == "name":
		Value = self.driver.find_element_by_name(value1).get_attribute(value2)
		return Value
	elif type == "link_text":
		Value = self.driver.find_element_by_link_text(value1).get_attribute(value2)
		return Value
	elif type == "class_name":
		Value = self.driver.find_element_by_class_name(value1).get_attribute(value2)
		return Value
	elif type == "id":
		Value = self.driver.find_element_by_id(value1).get_attribute(value2)
		return Value

# 获取下拉框的文本的值

def Get_text(self, type, value):
	if type == "xpath":
		text = self.driver.find_element_by_xpath(value).text
		return text
	elif type == "name":
		text = self.driver.find_element_by_name(value).text
		return text
	elif type == "link_text":
		text = self.driver.find_element_by_link_text(value).text
		return text
	elif type == "class_name":
		text = self.driver.find_element_by_class_name(value).text
		return text
	elif type == "id":
		text = self.driver.find_element_by_id(value).text
		return text

# 显性等待时间
def WebDriverWait(self, MaxTime, Mimtime, value):
	element = self.driver.find_element(By.ID, value)
	WebDriverWait(self.driver, MaxTime, Mimtime).until(EC.presence_of_element_located(element))

# # 鼠标移动点击机制
def Move_action(self, type, value):
	if type == "xpath":
		xm = self.driver.find_element_by_xpath(value)
		webdriver.ActionChains(self.driver).click(xm).perform()
	elif type == "id":
		xm = self.driver.find_element_by_id(value)
		webdriver.ActionChains(self.driver).click(xm).perform()
	elif type == "name":
		xm = self.driver.find_element_by_name(value)
		webdriver.ActionChains(self.driver).click(xm).perform()
	elif type == "link_text":
		xm = self.driver.find_element_by_link_text(value)
		webdriver.ActionChains(self.driver).click(xm).perform()

# 校验按钮是否为选中状态
def Is_selected(self, type, value):
	if type == "id":
		self.driver.find_element_by_id(value).is_selected()
	elif type == "xpath":
		self.driver.find_element_by_xpath(value).is_selected()
	elif type == "class_name":
		self.driver.find_element_by_class_name(value).is_selected()
	elif type == "name":
		self.driver.find_element_by_name(value).is_selected()
	elif type == "link_text":
		self.driver.find_element_by_link_text(value).is_selected()

def screenshot(self, index): #需要写这个方法才能实现截图
	file_path = os.getcwd() + '/screenshots/'
	# print file_path
	if os.path.exists(file_path):
		pass
	else:
		os.mkdir(file_path)
	timestr = time.strftime('%Y%m%d',time.localtime(time.time())) #精确到秒会无法截图,要和htmltestrunner.py文件格式一致
	img_name = timestr + '_' + str(index) + '.png' #图片以时间+第几次截图命名
	self.driver.get_screenshot_as_file('%s%s' % (file_path,img_name)) #图片保存在定义路径中
	return img_name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值