【Selenium+Python Webdriver】报错之:TypeError: user_login() missing 1 required positional argument: 'self'
先贴一下源码:
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'的更多相关文章
- 【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 ...
- django报错TypeRError:__init__() missing 1 required positional argument: 'on_delete'
在添加外键的时候,在括号里添加on_delete=models.CASCADE即可 on_delete=models.CASCADE是级联删除的意思,意思就是说当你更新或删除主键表,那外键表也会跟随一 ...
- python进行数据库迁移的时候显示(TypeError: __init__() missing 1 required positional argument: 'on_delete')
进行数据库迁移的时候,显示 TypeError: __init__() missing 1 required positional argument: 'on_delete' 图示: 出现原因: 在 ...
- 执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'
在执行python manage.py makemigrations时报错: TypeError: __init__() missing 1 required positional argument: ...
- 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 ...
- Django关联数据库时报错TypeError: __init__() missing 1 required positional argument: 'on_delete'
sgrade = models.ForeignKey("Grades",) 执行python manage.py makemigrations后出现TypeError: __ini ...
- Django问题 TypeError: __init__() missing 1 required positional argument: 'on_delete'
问题:在执行python manage.py makemigrations learning_logs时,系统会报错,提示:TypeError: __init__() missing 1 requir ...
- TypeError: save() missing 1 required positional argument: 'self'
RT,在创建模型对象的时候,提示TypeError: save() missing 1 required positional argument: 'self' 解决办法:在创建模型对象的时候需要加上 ...
- TypeError: __init__() missing 1 required positional argument: 'on_delete'
报错的原因呢,就是在设计model时我弄了个外键,然后就报错了... 不难看出,它是想让我们在表与表关联时添加一个on_delete参数 解决办法: 如其所愿,加上on_delete=models.C ...
随机推荐
- c#使用Split分割字符串的几种方法
原文发布时间为:2009-03-07 -- 来源于本人的百度文章 [由搬家工具导入] 最近发现很多人在问在c#中使用Split等分割字符串的方法,今天有时间所以把使用Split等分割字符串的方法做了一 ...
- mysql-count与sum
参考:https://www.jb51.net/article/141238.htm 建立时间临时辅助表:https://blog.csdn.net/qq_36226453/article/detai ...
- Boost::thread库的使用(转)
原文转自 http://blog.csdn.net/lee353086/article/details/4673790 本文主要由线程启动.Interruption机制.线程同步.等待线程退出.Thr ...
- linux下轻松修改pdf文件
前几天使用firefox打印了一个网页,后来查看有很多页面都是评论,对我来说,实在没有什么用处,就想把多余的内容给删除了,后来,终于找到了一个工具:pdf mod非常不错的工具,直接打开文件,选择要删 ...
- 深入代码详谈irqbalance【转】
转自:http://blog.csdn.net/whrszzc/article/details/50533866 版权声明:本文为博主原创文章,未经博主允许不得转载. 深入代码详谈irqbalance ...
- why not ovp protection ?
HW MSM8917 PM8937 PMI8940 Question : Recently, I connect usb cable with 10V to the phone. Why does t ...
- AC日记——宠物收养所 bzoj 1208
1208 思路: 一棵splay树: 如果来者是宠物且树空,就将其加入树中: 如果树不空,则查找前驱后继,取最优,然后删点: 对人亦然: 注意边界和取模,最后的ans用long long其余用int即 ...
- php的session与免登陆问题
Session 与 Session的GC 由于PHP的工作机制,它并没有一个daemon线程来定期的扫描Session 信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 sessi ...
- IntelliJ IDEA设置鼠标移动到方法上提示API注释
参考: https://www.cnblogs.com/guazi/p/6474426.html(图片转自此篇文章)
- 修改密码删除登陆态,那其他正在登陆的app怎么办?
修改密码删除登陆态,那其他正在登陆的app怎么办?