【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='1'):
    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='1'):
    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='1'):
        self.open()
        self.login_username(username)
        self.login_password(password)
        self.login_button()

if __name__ == '__main__':
   #需要引用才可以,参考地址
login().user_login()
复制代码

 

posted @   Owen_ET  阅读(9613)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 模様 (TV size ver.) Ivy to Fraudulent Game
  3. 3 河口恭吾
  4. 4 愛してる 高鈴
  5. 5 一生所爱 卢冠廷,莫文蔚
  6. 6 世间美好与你环环相扣 柏松
  7. 7 理想三旬 陈鸿宇
  8. 8 不浪漫罪名 王杰
  9. 9 樱花树下 张敬轩
  10. 10 因为你在 达闻西乐队,福禄寿FloruitShow
  11. 11 悬溺 葛东琪
悬溺 - 葛东琪
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 葛东琪

作曲 : 葛东琪

编曲 : 葛东琪

我主张制止不了就放任

这欲望与绝望之争

余温她却喜欢过门

临走呢

还随手关了灯

So funny

Ya i ya i ya i ya i ya i ya i ya

Ya i ya i ya i ya i

Ya i ya i ya i ya i ya i ya i ya

It's so funny ya i ya i

Ya i ya i ya i ya i ya i ya i ya

Ya i ya i ya i ya i

It's so funny ya i ya i ya i ya i ya

Ya i ya i ya i ya i

我主张克制不了就放任

悬上该有的天真

起伏在于喜怒哀乐

松了绳

大不了无人问

Ya i ya i ya i ya i ya i ya i ya

Ya i ya i ya i ya i

Ya i ya i ya i ya i ya i ya i ya

It's so funny ya i ya i

Ya i ya i ya i ya i ya i ya i ya

Ya i ya i ya i ya

It's so funny ya i ya i ya i ya i ya

Ya i ya i ya i ya

有什么话要说

录音师 : 葛东琪

混音师 : 葛东琪

制作人 : 葛东琪

点击右上角即可分享
微信分享提示