x子涵 2023-10-12 13:41 采纳率: 25%
浏览 43

appium学习,webdriver.Remote方法


from appium import webdriver


class TestSimple(object):

    @classmethod
    def setup_class(cls):
        print("------ setup before class TestSohu ------")
        a = {'platformName': 'Android',
             'platformVersion': '5.1.1',
             'deviceName': '127.0.0.1:21503',
             'appPackage': 'com.seafile.seadroid2',
             'appActivity': '.ui.activity.BrowserActivity',
             'sessionOverride': 'true',
             'unicodeKeyboard': 'true',
             'resetKeyboard': 'false',
             'noSign': 'true',
             'noReset': 'true',
             }
        cls.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", a)
        print(cls.driver)
        cls.driver.implicitly_wait(10)

    def test_login_success(self):
        print(123)

    @classmethod
    def teardown_class(cls):
        print("------ teardown after class TestSohu ------")
        cls.driver.quit()

为啥一直报错self = <[AttributeError("'WebDriver' object has no attribute 'session_id'") raised in repr()] WebDriver object at 0x1e3d2ab6940>
command_executor = 'http://127.0.0.1:4723/wd/hub'
desired_capabilities = {'appActivity': '.ui.activity.BrowserActivity', 'appPackage': 'com.seafile.seadroid2', 'deviceName': '127.0.0.1:21503', 'noReset': 'true', ...}
browser_profile = None, proxy = None, keep_alive = False

def __init__(self, command_executor='http://127.0.0.1:4723/wd/hub',
             desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False):
  super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)

E TypeError: init() takes from 1 to 5 positional arguments but 6 were given

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-13 13:48
    关注

    引自强大而免费的微信小程序:皆我百晓生。


    根据报错信息,发现是因为webdriver.Remote方法的参数传递出错。正确的用法是将desired_capabilities字典作为一个参数传递给webdriver.Remote方法,而不是把每个键值对作为单独的参数传递。

    在代码中的正确的用法是:

    class TestSimple(object):
     
        @classmethod
        def setup_class(cls):
            print("------ setup before class TestSohu ------")
            desired_capabilities = {
                'platformName': 'Android',
                'platformVersion': '5.1.1',
                'deviceName': '127.0.0.1:21503',
                'appPackage': 'com.seafile.seadroid2',
                'appActivity': '.ui.activity.BrowserActivity',
                'sessionOverride': 'true',
                'unicodeKeyboard': 'true',
                'resetKeyboard': 'false',
                'noSign': 'true',
                'noReset': 'true',
            }
            cls.driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_capabilities)
            print(cls.driver)
            cls.driver.implicitly_wait(10)
    

    请注意,将desired_capabilities作为一个参数传递给webdriver.Remote方法时,要使用参数名desired_capabilities=desired_capabilities,而不是只传递desired_capabilities变量。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月12日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错