先贴一下源码:

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. c#使用Split分割字符串的几种方法

    原文发布时间为:2009-03-07 -- 来源于本人的百度文章 [由搬家工具导入] 最近发现很多人在问在c#中使用Split等分割字符串的方法,今天有时间所以把使用Split等分割字符串的方法做了一 ...

  2. mysql-count与sum

    参考:https://www.jb51.net/article/141238.htm 建立时间临时辅助表:https://blog.csdn.net/qq_36226453/article/detai ...

  3. Boost::thread库的使用(转)

    原文转自 http://blog.csdn.net/lee353086/article/details/4673790 本文主要由线程启动.Interruption机制.线程同步.等待线程退出.Thr ...

  4. linux下轻松修改pdf文件

    前几天使用firefox打印了一个网页,后来查看有很多页面都是评论,对我来说,实在没有什么用处,就想把多余的内容给删除了,后来,终于找到了一个工具:pdf mod非常不错的工具,直接打开文件,选择要删 ...

  5. 深入代码详谈irqbalance【转】

    转自:http://blog.csdn.net/whrszzc/article/details/50533866 版权声明:本文为博主原创文章,未经博主允许不得转载. 深入代码详谈irqbalance ...

  6. why not ovp protection ?

    HW MSM8917 PM8937 PMI8940 Question : Recently, I connect usb cable with 10V to the phone. Why does t ...

  7. AC日记——宠物收养所 bzoj 1208

    1208 思路: 一棵splay树: 如果来者是宠物且树空,就将其加入树中: 如果树不空,则查找前驱后继,取最优,然后删点: 对人亦然: 注意边界和取模,最后的ans用long long其余用int即 ...

  8. php的session与免登陆问题

    Session 与 Session的GC 由于PHP的工作机制,它并没有一个daemon线程来定期的扫描Session 信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 sessi ...

  9. IntelliJ IDEA设置鼠标移动到方法上提示API注释

    参考: https://www.cnblogs.com/guazi/p/6474426.html(图片转自此篇文章)

  10. 修改密码删除登陆态,那其他正在登陆的app怎么办?

    修改密码删除登陆态,那其他正在登陆的app怎么办?