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

提示错误: 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')

    已采纳该答案
    1 打赏 评论
  • 吃肉的小馒头 2021-08-03 14:03

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

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

相关推荐 更多相似问题