51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2017|回复: 5
打印 上一主题 下一主题

菜鸟求助!! webdriver基于python,封装登录脚本时报错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-7-21 16:05:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kettle_hou 于 2016-7-21 16:27 编辑

如题!我想把打开浏览器和用户登录作为两个class,放在同一个模块下使用。在调用用户登录类时,会报错!!

猜想:在def denglu(self):下的应该要调用class browser():创建的driver对象,不知道如何实现。请各位高手指点,谢谢。

代码如下:
#####new.py#####

from public import browser
from public import login
from selenium import webdriver

browser().firefox("此处是url")   
yonghu = login("此处是username","此处是password")
yonghu.denglu()

#####public.py#####

from selenium import webdriver
import os
class browser():
    # webdriver for chrome
    def chrome(self,url,driverpath):
        os.environ["webdriver.chrome.driver"] = driverpath
        driver = webdriver.Chrome()
        driver.get(url)

    # webdriver for firefox
    def firefox(self,url):
        driver = webdriver.Firefox()
        driver.get(url)  

    #login
class login():
    def __init__(self,username,password):
        self.name = username
        self.password = password
        
    def denglu(self):
        driver = webdriver()
        driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_4__userName']").send_keys(self.name)
        driver.find_element_by_id("TANGRAM__PSP_4__password").send_keys(self.password)
        driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_4__submit']").click()
        text = driver.find_element_by_id("TANGRAM__PSP_4__error").text




报错内容!!
Traceback (most recent call last):
  File "F:\Workplace\Python auto testing\src\new1\__init__.py", line 6, in <module>
    yonghu = login("此处是username","此处是password")
  File "F:\Workplace\Python auto testing\src\new1\public.py", line 19, in __init__
    a = self.driver
AttributeError: login instance has no attribute 'driver'
     

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    3#
    发表于 2016-7-21 17:24:09 | 只看该作者
    让denglu()这个函数带参,将browser().firefox("此处是url")   的driver的值传参进去。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-1 14:56
  • 签到天数: 1182 天

    连续签到: 1 天

    [LV.10]测试总司令

    4#
    发表于 2016-7-21 17:26:28 | 只看该作者
    在Browser类中把你创建的driver return出来,或者写个方法getDriver得到driver,然后再登陆类中调用getDriver方法就可以使用了。

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2016-7-22 09:15:42 | 只看该作者
    清晨一缕阳光 发表于 2016-7-21 17:26
    在Browser类中把你创建的driver return出来,或者写个方法getDriver得到driver,然后再登陆类中调用getDriv ...

    在Browser类的函数下加了return后!请问我在denglu()这个方法里,怎么获得返回的driver?

    driver = self.driver   ????
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-1 14:56
  • 签到天数: 1182 天

    连续签到: 1 天

    [LV.10]测试总司令

    6#
    发表于 2016-7-22 09:34:21 | 只看该作者
    一个类中的Get ,Set 方法不会吗?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 15:14 , Processed in 0.063639 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表