• Selenium3+python3自动化(八)--登录案例、获取某元素的某属性的值.get_attribute("属性名")


    前言

    前面几篇都是讲一些基础的定位方法,没具体的案例,下面以开源系统OPMS登录为例。可参考:linux下搭建opms项目

    一、登录

    1.先打开浏览器

    2.打开opms登录页:http://ip:8088/login

    3.查找元素之前可以先设置元素等待:implicitlywait()

    4.输入用户名、密码,然后点登录

    参考代码:

    # coding:utf-8
    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("http://47.98.186.11:8088/login")
    driver.implicitly_wait(10)
    driver.find_element_by_name("username").send_keys("libai")
    driver.find_element_by_xpath("//div[@class='login-wrap']/input[2]").send_keys("123456")
    driver.find_element_by_xpath("//button[@type='submit']").click()
    

     二、检查结果

    1.登录完成之后,需要检查是否登录成功,这里就需要有个检查点,我这边选择右上角的账号,查看是不是刚才登录的账号

     2.定位到右上角链接,然后取.text方法获取这个元素的文本属性

    3.判断获取的值,与期望结果是否一致

    4.符合预期结果测试通过

    5.不符合预期结果测试不通过

    三、退出登录

    1.测试完之后,别忘了最后退出登录

    2.退出登录后,关闭浏览器

    参考代码:

    from selenium import webdriver
    import time
    name="libai"
    passwd="123456"
    host="http://47.98.106.11:8088"
    driver=webdriver.Chrome()
    # driver.maximize_window()
    driver.get(host+"/login")
    driver.implicitly_wait(10)
    driver.find_element_by_name("username").send_keys(name)
    driver.find_element_by_xpath("//div[@class='login-wrap']/input[2]").send_keys(passwd)
    driver.find_element_by_xpath("//button[@type='submit']").click()
    t=driver.find_element_by_xpath("//ul[@class='notification-menu']/li[2]/a").text
    if t==name:
        print("登录成功")
    else:
        print("登录失败")
    #点击账号
    driver.find_element_by_xpath("//ul[@class='notification-menu']/li[2]/a").click()
    time.sleep(3)
    #点击退出
    # driver.find_element_by_xpath("//li[@class='open']/ul/li[6]/a").click()
    driver.find_element_by_xpath("//li/ul/li/a[@href='/logout']").click()
    #获取href值,地址
    # a=driver.find_element_by_xpath("//li[@class='open']/ul/li[6]/a").get_attribute("href")
    # time.sleep(2)
    # driver.get(a)
    time.sleep(2)
    driver.close()
    

     

    四、登录函数

    1.虽然上面的代码实现了登录,但整个代码跟记流水账一样,没什么可读性。

    2.我们可以把登录和退出写成两个函数,这样看起来更舒服一点。

    3.把登录账号和密码参数化。

    # coding:utf-8
    from selenium import webdriver
    import time
    def login(driver,host,name,passwd):
        driver.get(host+"/login")
        driver.find_element_by_name("username").send_keys(name)
        driver.find_element_by_name("password").send_keys(passwd)
        driver.find_element_by_xpath("//div[@class='login-wrap']/button").click()
        time.sleep(3)
        a=driver.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a").text
        if a==name:
            return True
        else:
            return False
    def logout(driver):
        driver.find_element_by_xpath("//div[@class='menu-right']/ul/li[2]/a").click()
        time.sleep(2)
        h=driver.find_element_by_xpath("//li/ul/li[6]/a").get_attribute('href')
        print(type(h),h)
        time.sleep(2)
        driver.get(h)
    if __name__=="__main__":
        host="http://47.98.186.11:8088"
        driver=webdriver.Chrome()
        name='libai'
        passwd='123456'
        r=login(driver,host,name,passwd)
        if r:
            print("登录成功")
            logout(driver)
        else:
            print("登录失败")
        driver.close()
    

     运行结果:

     

    获取某元素的某属性的值

    a=driver.find_element_by_xpath("//li[@class='open']/ul/li[6]/a").get_attribute("href")
    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    PHP一维数组转二维数组正则表达式
    PHP IDE选择标准
    PHP导出MySQL数据字典 Summer-Mysql-Dic
    PHP导入导出csv文件 Summer-CSV
    laravel学习
    php markdown 接口文档生成工具 SummerDoc
    AIX系统日志
    inotify+rsync实现实时同步
    shell数组应用
    Nginx缓存功能、防盗链、URL重写
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13574454.html
Copyright © 2020-2023  润新知