You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么元组解包在Selenium WebDriverWait预期条件中不生效?

Selenium WebDriverWait 元组解包问题解答

报错的核心原因

问题本质是expected_conditions下的判断方法和find_element的参数规则不同:

  • find_element的方法签名要求接收两个独立的位置参数:find_element(by: By, value: str),你用*解包二元元组,刚好对应两个入参,语法完全合法。
  • EC.presence_of_element_located这类等待条件方法的入参要求是单个二元元组,也就是参数本身就要是(by, value)的结构,不需要提前解包。你原来的写法EC.presence_of_element_located(*Test.editprofile_button)相当于把元组拆成两个独立参数传给这个方法,会因为参数数量不匹配抛出异常。

正确的元组使用写法

你不需要额外做解包操作,直接把定义好的定位元组传入等待条件即可:

def profile_page_should_be_visible(self):
    wait = WebDriverWait(self.driver,20)
    # 直接传入元组即可,不需要解包
    wait.until(EC.presence_of_element_located(Test.editprofile_button))
    assert self.driver.find_element(*Test.editprofile_button).is_displayed()

这种写法和你改写后手动写两层括号的效果完全一致,你手动写的((By.XPATH, "//android.widget.TextView[@text=\"Edit profile info\"]"))本质就是把二元元组作为单个参数传入等待方法。

内容的提问来源于stack exchange,提问作者Aurimas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 10:54:04