首页 > 其他分享 >第12课、案例

第12课、案例

时间:2023-02-08 01:12:44浏览次数:36  
标签:12 locator text self driver element 案例 def

 

 

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC

class Base():

    def __init__(self,driver):
      self.driver = driver
      self.driver.maximize_window()

    def find(self,locator):
        ele = WebDriverWait(self.driver, 10).until(lambda x: x.find_element(*locator))
        return ele

    def send(self,locator,text):
        ele =self.find(locator)
        ele.send_keys(text)

    def click(self,locator):
        self.find(locator).click()


    def clear(self,locator):
        self.find(locator).clear()

    def get_text(self, locator):
        ele =self.find(locator)
        return ele.text

    def is_element_exist(self,locator):
        '''判断元素是否存在,结果返回布尔值 ture 或 false'''
        try:
            self.find(locator)
            print("找到元素了!!!!!")
            return True
        except:
            print("找不到元素")
            return False

    def text_in_element(self,locator,_text):
        '''判断元素text属性'''
        try:
            r = WebDriverWait(self.driver,30,1).until(EC.text_to_be_present_in_element(locator,_text))
            return r
        except:
            return False

    def value_in_element(self,locator,text):
        '''判断元素value属性'''
        try:
            r = WebDriverWait(self.driver,30,1).until(EC.text_to_be_present_in_element(locator,_text))
            return r
        except:
            return False

    def move_to_element(self,locator):
        '''鼠标悬停'''
        element = self.find(locator)
        ActionChains(self.driver).move_to_element(element).perform()

    def select_by_index(self,locator,index=0):
        '''select下拉框,index索引'''
        element =self.find(locator)
        Select(element).select_by_index(index)

    def select_by_value(self,locator,value):
        '''select下拉框,value'''
        element =self.find(locator)
        Select(element).select_by_index(value)

    def select_by_text(self,locator,_text):
        '''select下拉框,文本'''
        element =self.find(locator)
        Select(element).select_by_visible_text(_text)

    def is_alert(self,timeout=3):
        '''判断是否有alert,没有返回false,有返回alert对象'''
        try:
            alert = WebDriverWait(self.driver,timeout,1).until(EC.alert_is_present())
            return alert
        except:
            return False

    def js_focus_element(self,locator):
        '''聚焦元素'''
        target=self.find(locator)
        self.driver.execute_scrit("arguments[0,0]")

    def js_focus_top(self,locator):
        '''滑动到顶部'''
        js ="window.scrollTo(0,0)"
        self.driver.execute_scrit(js)


    def js_focus_end(self,locator):
        '''滑动到底部'''
        js =(0,"document.body.scrollHeight")
        self.driver.execute_scrit(js)



if __name__ == '__main__':
    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get("http://192.168.43.57/phpwind/admin.php#initiator")
    loc1 = ("name","admin_name")
    loc2 = ("name", "admin_pwd")
    loc3 = ("name", "submit")
    login_xpath = ("xpath",'html/body/table/tbody[1]/tr[1]/td/div/div/p/a[2]')

    b = Base(driver)  #实例
    b.send(loc1,"admin")
    b.send(loc2, "123456")
    b.click(loc3)
    t = b.get_text(login_xpath)
    print(t)
    assert t == "[注销]"

访问网站:http://192.168.43.57/phpwind/admin.php

1.登录

- 输入账号

- 输入密码

- 点击登录

 

2.添加用户

- 用户,用户管理

- 添加用户,输入用户,提交

新建用户页面:

 

 

import time
from t7.common.base import Base
from t7.pages.login_page import Login
from selenium.webdriver.common.by import By

class AddStudentInfo(Base):
    loc1 =(By.LINK_TEXT,"用户")
    loc2 =(By.LINK_TEXT,"用户管理")
    loc3 =(By.LINK_TEXT,"添加用户")
    loc4 =("name","username")
    loc5 =("name","password")
    loc6 =("name","email")
    #先点一下,再去选择选项
    loc7 =(By.CLASS_NAME,"select_wa")
    loc8 =(By.XPATH,"html/body/div[1]/form/div[2]/span/span/button")
    loc9 =(By.ID,"message")

    def add_stdent(self):
        self.click(self.loc1)
        self.click(self.loc2)

        self.driver.switch_to.frame("consumer-usermanage")
        self.click(self.loc3)

        self.send(self.loc4,"test001")
        self.send(self.loc5,"123456")
        self.send(self.loc6,"[email protected]")
        self.click(self.loc6)
        self.select_by_text(self.loc7,"普通会员")

        self.click(self.loc8)
        self.click(self.loc9)

    def is_add_student_sucess(self,text):
        #“用户名,在当前页面
        body =("tag name","body")
        t2 =self.find(body).text
        print(t2)
        return text in t2
  

if __name__ == '__main__':
    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get("http://192.168.43.57/phpwind/admin.php")
    a =Login(driver)
    a.login()
    b = AddStudentInfo(driver)
    b.add_stdent()
    result =b.is_add_student_sucess("完成相应操作")
    print("结果:%s" %result)

 

标签:12,locator,text,self,driver,element,案例,def
From: https://www.cnblogs.com/pingzi66-ww/p/17100283.html

相关文章

  • [LeetCode] 1233. Remove Sub-Folders from the Filesystem
    Givenalistoffolders folder,return thefoldersafterremovingall sub-folders inthosefolders.Youmayreturntheanswerin anyorder.Ifa folder[i......
  • 算法刷题 Day 32 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
    122.买卖股票的最佳时机II本题解法很巧妙,大家可以看题思考一下,在看题解。https://programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%8......
  • 案例操作:追踪犯罪模式以协助执法
    背景自21 世纪初地理空间科学进入执法领域以来,美国警方已使用GIS 工具将巡逻路线定位在犯罪热点区域。这一热点警务策略可帮助警方将人员集中在犯罪热点地区而不是随机巡......
  • 10.12条件分支的实现方法
    下面让我们来看一下条件分支的实现方法。条件分支的实现方法同循环处理的实现方法类似,使用的也是cmmp指令和跳转指令,这一点估计大家也预料到了。没错,条件分支就是利用这......
  • HDU5126 stars题解
    HDU5126Description\(T\)组数据,给一个空的三维空间,\(Q\)次操作,分为插入一个点和查询某个立方体内点的个数。\(T\le10,Q\le5\times10^4\)Sol题目没说强制在线......
  • P6812 「MCOI-02」Ancestor 先辈
    这个题真的是太恶心了……一份同样的代码,在不同的时间提交,一次能过,一次差一点点……第35个点是真nm恶心……(就挂在这个点上:一次950+ms,一次1.00s),刚好小号过了,大号没过……......
  • P1242 新汉诺塔
    新汉诺塔题目描述设有n个大小不等的中空圆盘,按从小到大的顺序从1到n编号。将这n个圆盘任意的迭套在三根立柱上,立柱的编号分别为A,B,C,这个状态称为初始状态......
  • 微服务引擎 MSE 2022年12月产品动态
    点击​​此处​​查看微服务引擎产品......
  • 服务网格 ASM 2022年12月产品动态
    ......
  • 【性能分析】【SLG】cpu-script卡顿案例
    用Unity自带的Profile排查,卡顿的原因主要在于循环遍历的次数太多。案例:遍历格子数太多导致卡顿。SLG游戏一张大地图由横竖多块“屏”拼接而成,一“屏”又由一片格子组成,一......