【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 ...
随机推荐
- SqlServer不允许更改字段类型(表中已有数据)
工具-选项-设计器-阻止保存要求重新创建表的更改,√去掉.
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 解决Manjaro linux的中文输入
系统安装完成后, 首先:安装中文输入法:pacman -S fcitx fcitx-libpinyin kcm-fcitx 接着:修改.xprofile 添加内容如下: export GTK2_RC_ ...
- kafka术语
kafka 架构Terminology(术语) broker(代理) Kafka集群包含一个或多个服务器,这种服务器被称为broker Topic 每条发布到Kafka集群的消息都有一个类别,这个类 ...
- Python学习杂记_3_字符串操作的常用方法
字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...
- hdu 4520
小Q系列故事——最佳裁判 Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- DB2 With语句递归
WITH T1 (T11 , T22 , T33 , T44) AS (SELECT TASKID , REPLY , ROWNUMBER () OVER (PARTITION BY TASKID) ...
- AC日记——食物链 codevs 1047
1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 动物王国中有 ...
- Needle in a haystack: efficient storage of billions of photos 【转】
转自09年的blog,因为facebook在国内无法访问,故此摘录. The Photos application is one of Facebook’s most popular features ...
- 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 ...