【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 ...
随机推荐
- What and How in an Application
Basically, two concerntrations: 1. What: business docs and prototype design 2. How: technical docs a ...
- Docker(三):Docker的基本概念
Docker镜像: Docker镜像就是一个只读模板,例如,一个镜像可以包含Ubuntu操作系统环境,里面安装了Apache或用户需要的其它应用程序. 镜像可以用来创建Docker容器.Docker提 ...
- [LeetCode] Maximum Product Subarray 连续数列最大积
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- linux多线程学习笔记六--一次性初始化和线程私有数据【转】
转自:http://blog.csdn.net/kkxgx/article/details/7513278 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,一次性初始化 以保证线程在调用资源 ...
- token in c and cpp (C preprocessor)
C tokens are of six types, They are, keyword identifier constant string-literal punctuator preproces ...
- 使用layer的iframe层提交表单后,需要关闭当前的iframe层,然后刷新父页面的方法2
<input type="button" onclick="edit(${it.id?c})" class="layui-btn layui-b ...
- Java发送邮件----自己封装的方法
发送邮件的封装类: package com.email; import java.util.Properties; import javax.mail.Authenticator; import ja ...
- mariadb 集群使用
集群启动问题 在kvm虚机下,启动mariad,日志报如下错误: :: [Note] /usr/libexec/mysqld: Shutdown complete :: mysqld_safe mys ...
- BZOJ——3412: [Usaco2009 Dec]Music Notes乐谱
http://www.lydsy.com/JudgeOnline/problem.php?id=3412 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: ...
- ios内存管理笔记(三)
我们在进行iOS开发时,经常会在类的声明部分看见类似于@synthesize window=_window; 的语句,那么,这个window是什么,_ window又是什么,两个东西分别怎么用,这是一 ...