XICSDNH 2021-08-03 12:41 采纳率: 100%
浏览 2480
已结题

提示错误: TypeError: open() missing 1 required positional argument: 'url'

封装:
from selenium import webdriver

def brower(type_):
    try:
        driver = getattr(webdriver, type_)()
    except:
        driver = webdriver.Chrome()
    return driver

class web_ui:
    # driver = webserver.Chrome()
    # 构造函数
    def __init__(self, type_):
        self.driver = brower(type_)

    # 打开url
    def open(self, url):
        self.driver.get(url)

    # 元素定位
    def locator(self, value):
        return self.driver.find_element(value)

    # 点击
    def click_(self, name, value):
        self.locator(name, value).click()

    # 输入
    def send_(self, name, value, txt):
        self.locator(name, value).send_keys(txt)

    # 退出
    def quit_(self):
        self.driver.quit()

    # 等待
    def sleep_(self, value=10):
        self.driver.implicitly_wait(value)
调用:

from selenium1.web_ui import web_ui

web_ui('Chrome')
web_ui.open('http://www.baidu.com')

提示错误:
TypeError: open() missing 1 required positional argument: 'url'

  • 写回答

3条回答 默认 最新

  • 喜欢摸鱼的程序员 2021-08-03 14:06
    关注

    报错解释的很详细,需要一个url参数,说明没收到url这个参数,类中方法定义也没问题,所以判断是调用时出现问题
    你调用的方式是以类方法调用的。而Open函数的第一个参数是self,所以只能以实例来调用
    建议了解一下类的相关知识
    如果按照你这个写法,
    应该先创建一个实例,通过实例来操作实例方法
    chrome = web_ui('Chrome')
    chrome.open('http://www.baidu.com')

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • python收藏家 2021-08-03 14:03
    关注

    要实例化之后才能调用open,你这个后面没加括号,只是个类对象还没实例,

    评论
  • 咕泡-三木 2021-08-03 17:55
    关注
    driver = web_ui('Chrome')  #  先实例化,得到对象
    driver .open('http://www.baidu.com')  # 调用对象的方法,这时会自动将对象本身传递给self参数,就可以正常运行了
    
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月5日
  • 已采纳回答 8月3日
  • 创建了问题 8月3日

悬赏问题

  • ¥15 字符串的比较老是报错
  • ¥15 复杂表达式求值程序里的函数优先级问题
  • ¥15 求密码学的客成社记ji着用
  • ¥35 POI导入树状结构excle
  • ¥15 初学者c语言题目解答
  • ¥15 div editable中的光标问题
  • ¥15 mysql报错1415Not allowed to return a result set from a trigger 不知如何修改
  • ¥60 Python输出Excel数据整理,算法较为复杂
  • ¥15 回答几个问题 关于数据库
  • ¥15 51单片机串口通信问题,未完成且要修改