class ZenTaoBug(): # 定位登录 loc_ad = ("id", "account") loc_pwd = ("xpath", '//*[@id="login-form"]/form/table/tbody/tr[2]/td/input') loc_click = ("id", "submit") # 定位添加bug loc_test = ("link text", "测试") loc_bug = ("link text", "Bug") loc_add_bug = ("xpath", '//*[@id="createActionMenu"]/a') loc_version = ("xpath", '//*[@id="openedBuild_chosen"]/ul') loc_version_trunk = ("xpath", '//*[@id="openedBuild_chosen"]/div/ul/li') loc_title = ("id", "title") # 切换iframe loc_body = ("class name", 'article-content') loc_save = ("id", "submit") # 定位标题 loc_ad_title = ("xpath", '//*[@id="bugList"]/tbody/tr[1]/td[4]/a') def __init__(self, driver): self.driver = driver self.zentao = Base(self.driver) # 点击登录 def login(self, user="******", pwd="123456"): self.driver.get("http://127.0.0.1:82/zentao/user-login.html") self.zentao.sendKeys(self.loc_ad, user) self.zentao.sendKeys(self.loc_pwd, pwd) self.zentao.click(self.loc_click) def addBug(self, _title="ceshi", _text="i love tingting"): self.zentao.click(self.loc_test) self.zentao.click(self.loc_bug) self.zentao.click(self.loc_add_bug) self.zentao.click(self.loc_version) self.zentao.click(self.loc_version_trunk) self.zentao.sendKeys(self.loc_title, _title) # 切换iframe loc_iframe = ("class name", "ke-edit-iframe") frame = self.zentao.findElement(loc_iframe) self.driver.switch_to.frame(frame) self.zentao.sendKeys(self.loc_body, _text) self.driver.switch_to.default_content() js = "window.scrollTo(0,document.body.scrollHeight)" self.driver.execute_script(js) self.zentao.click(self.loc_save) # 判断是否添加成功 def is_add_sucess(self, _text): return self.zentao._is_text_in_element(self.loc_ad_title, _text)
class LoginPage(): #初始化登录页面中用到的参数,对base进行实例化 def __init__(self,driver): #对导入的base进行实例化 self.base = Base(driver) self.driver = driver #定位用户名元素的参数 self.loc_user = ("id","txtUserName") #定位密码元素的参数 self.loc_pwd = ("id","txtPassWord") #定位登录按钮元素的参数 self.button = ("id","btnSubmit") #定位登录成功后首页右上角出现的用户名 self.home_page_username = ("id","userName") #定义输入用户名方法 def input_username(self,user_name): self.user_name = user_name self.base.send_key(self.loc_user,self.user_name) #定义输入密码方法 def input_pwd(self,user_pwd): self.user_pwd = user_pwd self.base.send_key(self.loc_pwd,self.user_pwd) #定义点击登录方法 def click_submit(self): self.base.click(self.button) #获取登录后右上角的用户名 def get_login_username(self): try: ele = self.base.findElement(self.home_page_username) username = ele.text return username except: return "" #判断元素是否包含文本 def is_login_sucess(self,text): result = self.base.is_text_in_element(self.home_page_username,text) return result #判断是否存在alert弹窗,有的话就关闭,没有就忽略 def is_alert_exist(self): result = self.base.is_alert_exist() if result: result.accept() else: pass
from selenium import webdriver from common.base import Base driver = webdriver.Chrome() driver.get("https://www.baidu.com") loc1 = ("link text", "新闻") zen = Base(driver) s1 = zen.is_title("百度一下,你就知道") print(s1) s2 = zen.is_title_contions("百度") print(s2) s3 = zen.is_text_in_element(loc1, "新闻") print(s3) s4 = zen.findElement(loc1).text print(s4) driver.quit()
class Mgsqgl(): def __init__(self, driver): self.driver = driver self.base = Base(self.driver) #定位用户名元素的参数 self.loc_user = ("id", "txtUserName") #定位密码元素的参数 self.loc_pwd = ("id", "txtPassWord") #定位登录按钮元素的参数 self.button = ("id", "btnSubmit") #首页导航栏右箭头 self.nav_left = ("css selector", "#nav_left>img") #定位导航菜单敏感时期管理 self.menu_mgsqgl = ("css selector", ".nav-minganshiqi-n>a>cite>p") #新增敏感时期按钮 self.loc_add_mgsq = ("id", "btnAddMgsq") #新增敏感时期:名称 self.loc_add_mgsq_mc = ("id", "mc") #新增敏感时期:有效期始 self.loc_add_mgsq_yxqs = ("id", "yxqs") #新增敏感时期:有效期止 self.loc_add_mgsq_yxqz = ("id", "yxqz") #日历选择框中:现在 self.loc_date_now = ('css selector', '.laydate-btns-now') #日历选择框中:4-30 self.loc_date_other = ( 'xpath', ".//*[@id='layui-laydate2']/div[1]/div[2]/table/tbody/tr[5]/td[5]") #敏感时期类型: self.loc_mgsqlx = ("css selector", ".layui-input.layui-unselect") #敏感时期类型:普通涉访人员 self.loc_ptsfry = ( "css selector", ".layui-unselect.layui-form-select.layui-form-selected>dl:nth-child(2)" ) #敏感时期弹窗:保存按钮 self.loc_save = ("xpath", "html/body/div[1]/form/div[5]/a") #敏感时期弹窗:关闭按钮 self.loc_close = ("xpath", "html/body/div[1]/form/div[5]/button") #是否设置预警值弹窗:确定按钮 self.loc_yj_confirm = ("xpath", ".//*[@id='layui-layer3']/div[3]/a[1]") #是否设置预警值弹窗:取消按钮 self.loc_yj_cancel = ("xpath", ".//*[@id='layui-layer3']/div[3]/a[2]") #设置预警值弹窗窗口id,用于判断这个窗口是否打开了 self.loc_yj_mc = ("id", "mc") #-------------------预警设置页面------------------------ #设置预警值:蓝色预警 self.loc_yjfz_lsyj = ("xpath", ".//*[@id='yjFz']/li[1]/div/input") #设置预警值:提交按钮 self.loc_szyjz_submit = ("css selector", ".submit_btn") #提交提示 /删除成功提示共用 self.submit_tips = ("css selector", ".layui-layer-content.layui-layer-padding") #点击列表页的查看按钮 self.loc_list_view = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[0].click()''' #------------------查看弹窗 ------------------ #title 与查看报告共用 self.loc_title = ("css selector", ".layui-layer-title") #-----------------编辑弹窗-------------------- self.loc_list_edit = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[1].click()''' #---编辑弹窗:提交按钮 self.loc_edit_submit = ("css selector", ".layui-btn") #----------------人员导入--------------- self.loc_list_import = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[2].click()''' #-人员导入:管控来源 self.loc_gkly = ("css selector", ".layui-unselect.layui-form-select") # 管控来源下拉选项: self.loc_gabjb = ("css selector", ".layui-anim.layui-anim-upbit:nth-child(2)") #导入文件 self.loc_file = ("id", "file") #提交按钮 self.loc_import_submit = ("css selector", ".layui-btn") #导入结果提示框标题 self.loc_import_mess_title = ("css selector", ".layui-layer-title") #-----------列表:删除按钮---- self.loc_list_delete = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[3].click()''' #删除提示框:确定删除按钮 self.loc_dele_butn = ("css selector", ".layui-layer-btn0") #-----------列表:查看报告按钮----- self.loc_view_report = '''document.getElementsByTagName('iframe')[1].contentWindow.document. body.getElementsByTagName('tbody')[0].getElementsByTagName('a')[4].click()''' #登录帐号 def login(self, username, passwd): self.base.send_key(self.loc_user, username) self.base.send_key(self.loc_pwd, passwd) self.base.click(self.button) #进入敏感时间管理列表页,“新增敏感时期” def mgsqgl_list(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) self.driver.switch_to.frame(1) time.sleep(2) self.base.click(self.loc_add_mgsq) time.sleep(2) self.driver.switch_to.default_content() self.driver.switch_to.frame("layui-layer-iframe2") time.sleep(2) self.base.send_key(self.loc_add_mgsq_mc, "国庆节") self.base.click(self.loc_add_mgsq_yxqs) self.base.click(self.loc_date_now) self.base.click(self.loc_add_mgsq_yxqz) self.base.click(self.loc_date_other) self.base.click(self.loc_mgsqlx) self.base.click(self.loc_ptsfry) #新增敏感时期后,点击“保存” def mgsqgl_save(self): self.base.click(self.loc_save) self.driver.switch_to.default_content() self.driver.switch_to.frame(1) time.sleep(2) #新增敏感时期后,点击“关闭” def mgsqgl_close(self): self.base.click(self.loc_close) self.driver.switch_to.default_content() self.driver.switch_to.frame(1) #是否出现“是否设置预警值”的弹窗 def is_set_early_warn(self): try: ele = self.base.findElement(self.loc_yj_confirm) return True except: return False #将新增敏感时期保存后,弹出是否进行预警值设置的点击按钮单独提出来,便于后续分别调用 #点击取消按钮 def mgsqgl_qxyj(self): self.base.click(self.loc_yj_cancel) #点击确定按钮 def mgsqgl_jryj(self): self.base.click(self.loc_yj_confirm) #是否进入设置预警值的页面,用于判断新增敏感时期并保存后是点击确定成功进入了预警值设置,还是点击取消成功未进入预警值设置 def is_open_early_warn(self): try: self.driver.switch_to.default_content() self.driver.switch_to.frame(2) ele = self.base.findElement(self.loc_yj_mc) return True except: return False #设置预警值,修改了蓝色预警值,提交 def szyjz(self, value): self.base.clear(self.loc_yjfz_lsyj) self.base.send_key(self.loc_yjfz_lsyj, value) self.base.click(self.loc_szyjz_submit) self.driver.switch_to.default_content() #是否提交成功 此方法未用上,因为提示太短,获取不到 def is_submit_success(self, text): result = self.base.is_text_in_element(self.submit_tips, text) return result #点击列表上的查看按钮 def click_view(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_view) self.driver.switch_to.default_content() #点击列表上的编辑按钮 def click_edit(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_edit) self.driver.switch_to.default_content() self.driver.switch_to.frame(2) #判断弹窗的标题文本是否包含“查看”,返回True或False def get_title(self, text): result = self.base.is_text_in_element(self.loc_title, text) return result #编辑弹窗的标题文本获取为空,所以使用获取窗口中的“提交按钮”文本作为判断 def get_submit_text(self, text): result = self.base.is_text_in_element(self.loc_edit_submit, text) return result #人员导入操作 def import_mem(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_import) self.driver.switch_to.frame(2) self.base.click(self.loc_gkly) self.base.click(self.loc_gabjb) self.base.send_key(self.loc_file, r"C:\Users\Ling\Downloads\lksfmb.xlsx") self.base.click(self.loc_import_submit) self.driver.switch_to.default_content() #获取导入结果 def get_import_result(self, text): result = self.base.is_text_in_element(self.loc_import_mess_title, text) return result #删除敏感时期 def delete(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_list_delete) self.driver.switch_to.frame(1) self.base.click(self.loc_dele_butn) self.driver.switch_to.default_content() #删除敏感时期成功 def del_success(self, text): result = self.base.is_text_in_element(self.submit_tips, text) return result #查看报告 def view_report(self): self.base.click(self.nav_left) time.sleep(2) self.base.click(self.menu_mgsqgl) time.sleep(2) self.driver.execute_script(self.loc_view_report) self.driver.switch_to.default_content()
# @Author : 周博远 # @Email : [email protected] # @File : t4.py # @Software: PyCharm ''' radio ''' from common.base import Base from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select driver = webdriver.Firefox() driver.get("https://www.baidu.com/") baidu = Base(driver) loc1 = ("link text", "设置") mouse = baidu.findElement(loc1) ActionChains(driver).move_to_element(mouse).perform() loc2 = ("link text", "搜索设置") mouse1 = baidu.click(loc2) loc3 = ("id", "s1_1") loc4 = ("id", "s1_2") r1 = baidu.isSelected(loc3) print(r1) r2 = baidu.isSelected(loc4) print(r2)
# 判断元素是隐藏还是显示的 from selenium import webdriver from common.base import Base driver = webdriver.Firefox() driver.get("http://boss.xjxueche.com/") xiaojia = Base(driver) loc1 = ("id","userName") # 判断元素 a = xiaojia.findElement(loc1) r = a.is_displayed() print(r) # True:显示的, False:隐藏的, 元素不存在报错 # is_selccted()判断是够被选中,返回True和False(针对下拉框)
# @Software: PyCharm ''' is_displayed()---判断元素是否显示 ''' from common.base import Base from selenium import webdriver driver = webdriver.Firefox() driver.get("http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html") zentao = Base(driver) loc1 = ("id", "account") loc2 = ("name", "password") loc3 = ("id", "submit") el1 = zentao.findElement(loc1) #判断元素 r1 = el1.is_displayed() print(r1) # True 显示的 loc4 = ("id", "hiddenwin") el2 = zentao.findElement(loc4) r2 = el2.is_displayed() print(r2) # False 隐藏的 loc5 = ("id", "hiddenwin1") el3 = zentao.findElement(loc5) r3 = el3.is_displayed() print(r3) # 报错selenium.common.exceptions.TimeoutException: Message元素不存在
import time from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains #鼠标操作 from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select #导入Select 类 from common.base import Base driver = webdriver.Chrome() driver.get("https://www.baidu.com") # driver.maximize_window() base = Base(driver) loc1 = ("link text", "设置") loc2 = ("link text", "搜索设置") loc3 = (By.ID, "nr") loc4 = (By.LINK_TEXT, "保存设置") mouse = base.findElement(loc1) ActionChains(driver).move_to_element(mouse).perform() base.findElement(loc2).click() s = base.findElement(loc3) Select(s).select_by_value("20") base.click(loc4) a = driver.switch_to.alert print(a.text) a.accept() time.sleep(5) driver.quit()
# coding=utf-8 from common.base import Base from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select driver = webdriver.Chrome() driver.get("http://www.baidu.com") loc1 = ("link text", "设置") dudu = Base(driver) mouse = dudu.findElement(loc1) ActionChains(driver).move_to_element(mouse).perform() loc2 = ("link text", "搜索设置") dudu.click(loc2) loc3 = ("id", "nr") s = dudu.findElement(loc3) Select(s).select_by_value("20")
from common.base import Base from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.select import Select driver = webdriver.Firefox() driver.get('https://www.baidu.com') zentao = Base(driver) loc1 = ('link text', '设置') mouse = zentao.findElement(loc1) ActionChains(driver).move_to_element(mouse).perform() loc2 = ('link text', '搜索设置') zentao.click(loc2) loc3 = ('xpath', ".//*[@id='nr']/option[3]") r1 = zentao.findElement(loc3).is_selected() print(r1) loc4 = ('id', 'nr') select = zentao.findElement(loc4) Select(select).select_by_index(2) r2 = zentao.findElement(loc3).is_selected() print(r2)