先贴一下源码:

base.py文件如下:

from selenium import webdriver

class Page(object):
'''
页面基础类,用于所有页面的继承
''' rb_url = 'http://XXXXX' def __init__(self,selenium_driver,base_url=rb_url):
self.driver = selenium_driver
self.base_url = base_url
self.timeout = 30 def on_page(self):
return self.driver.current_url == (self.base_url + self.url) def open(self):
self._open(self.url) def _open(self,url):
url = self.base_url + url
self.driver.get(url)
assert self.on_page(),'url is NOT%s' %url def find_element(self,*loc):
return self.driver.find_element(*loc) def find_elements(self,*loc):
return self.driver.find_element(*loc) def script(self,src):
return self.driver.execute_script(src)

loginPage.py文件如下:

from base import Page
from selenium.webdriver.common.by import By
from selenium import webdriver class login(Page): url = '' login_username_loc = (By.CSS_SELECTOR,"#_easyui_textbox_input1")
login_password_loc = (By.CSS_SELECTOR,"#_easyui_textbox_input2")
login_button_loc = (By.CSS_SELECTOR,"button[type=submit]") def login_username(self,username):
self.find_element(*self.login_username_loc).send_keys(username) def login_password(self,password):
self.find_element(*self.login_password_loc).send_keys(password) def login_button(self):
self.find_element(*self.login_button_loc).click() #定义统一登录口
def user_login(self,username='zc',password=''):
self.open()
self.login_username(username)
self.login_password(password)
self.login_button() if __name__ == '__main__':
user_login()

运行时报错:

TypeError: user_login() missing 1 required positional argument: 'self'

经查询是因为self丢失了要传递的参数。

解决方法如下:

一、定义的user_login()位置不动,把self替换引参数,见下面:

#定义统一登录口
def user_login(driver = webdriver.Chrome(),username='zc',password=''):
loginPage = login(driver)
loginPage.open()
loginPage.login_username(username)
loginPage.login_password(password)
loginPage.login_button()

二、定义的user_login()移动到class中,self会指向base.py文件的selenium_driver无参数

TypeError: __init__() missing 1 required positional argument: 'selenium_driver'

完整修改代码如下:

base.py文件修改:

    def __init__(self,selenium_driver = webdriver.Chrome(),base_url=rb_url):
self.driver = selenium_driver
self.base_url = base_url
self.timeout = 30

loginPage.py文件修改如下:

from base import Page
from selenium.webdriver.common.by import By
from selenium import webdriver class login(Page): url = '' login_username_loc = (By.CSS_SELECTOR,"#_easyui_textbox_input1")
login_password_loc = (By.CSS_SELECTOR,"#_easyui_textbox_input2")
login_button_loc = (By.CSS_SELECTOR,"button[type=submit]") def login_username(self,username):
self.find_element(*self.login_username_loc).send_keys(username) def login_password(self,password):
self.find_element(*self.login_password_loc).send_keys(password) def login_button(self):
self.find_element(*self.login_button_loc).click() #-->移动到class中,定义统一登录口
def user_login(self,username='zc',password=''):
self.open()
self.login_username(username)
self.login_password(password)
self.login_button() if __name__ == '__main__':
   #需要引用才可以,参考地址
login().user_login()

【Selenium+Python Webdriver】报错之:TypeError: user_login() missing 1 required positional argument: 'self'的更多相关文章

  1. 【python3】 django2.0 在生成数据库表时报错: TypeError: __init__() missing 1 required positional argument: 'on_delete'

    python: 3.6.4 django: 2.0 models.py 代码如下 # coding: utf-8 from django.db import models from django.co ...

  2. django报错TypeRError:__init__() missing 1 required positional argument: 'on_delete'

    在添加外键的时候,在括号里添加on_delete=models.CASCADE即可 on_delete=models.CASCADE是级联删除的意思,意思就是说当你更新或删除主键表,那外键表也会跟随一 ...

  3. python进行数据库迁移的时候显示(TypeError: __init__() missing 1 required positional argument: 'on_delete')

    进行数据库迁移的时候,显示  TypeError: __init__() missing 1 required positional argument: 'on_delete' 图示: 出现原因: 在 ...

  4. 执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'

    在执行python manage.py makemigrations时报错: TypeError: __init__() missing 1 required positional argument: ...

  5. Django :执行 python manage.py makemigrations 时报错 TypeError: __init__() missing 1 required positional argument: 'on_delete'

    原因 执行命令 python manage.py makemigrations 报错 TypeError: __init__() missing 1 required positional argum ...

  6. Django关联数据库时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'

    sgrade = models.ForeignKey("Grades",) 执行python manage.py makemigrations后出现TypeError: __ini ...

  7. Django问题 TypeError: __init__() missing 1 required positional argument: 'on_delete'

    问题:在执行python manage.py makemigrations learning_logs时,系统会报错,提示:TypeError: __init__() missing 1 requir ...

  8. TypeError: save() missing 1 required positional argument: 'self'

    RT,在创建模型对象的时候,提示TypeError: save() missing 1 required positional argument: 'self' 解决办法:在创建模型对象的时候需要加上 ...

  9. TypeError: __init__() missing 1 required positional argument: 'on_delete'

    报错的原因呢,就是在设计model时我弄了个外键,然后就报错了... 不难看出,它是想让我们在表与表关联时添加一个on_delete参数 解决办法: 如其所愿,加上on_delete=models.C ...

随机推荐

  1. SqlServer不允许更改字段类型(表中已有数据)

    工具-选项-设计器-阻止保存要求重新创建表的更改,√去掉.

  2. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  3. 解决Manjaro linux的中文输入

    系统安装完成后, 首先:安装中文输入法:pacman -S fcitx fcitx-libpinyin kcm-fcitx 接着:修改.xprofile 添加内容如下: export GTK2_RC_ ...

  4. kafka术语

    kafka 架构Terminology(术语) broker(代理) Kafka集群包含一个或多个服务器,这种服务器被称为broker Topic  每条发布到Kafka集群的消息都有一个类别,这个类 ...

  5. Python学习杂记_3_字符串操作的常用方法

    字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...

  6. hdu 4520

    小Q系列故事——最佳裁判 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total ...

  7. DB2 With语句递归

    WITH T1 (T11 , T22 , T33 , T44) AS (SELECT TASKID , REPLY , ROWNUMBER () OVER (PARTITION BY TASKID) ...

  8. AC日记——食物链 codevs 1047

    1074 食物链 2001年NOI全国竞赛  时间限制: 3 s  空间限制: 64000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 动物王国中有 ...

  9. Needle in a haystack: efficient storage of billions of photos 【转】

    转自09年的blog,因为facebook在国内无法访问,故此摘录. The Photos application is one of Facebook’s most popular features ...

  10. luogu P3092 [USACO13NOV]没有找零No Change

    题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 ...