【发布时间】:2022-01-19 12:15:45
【问题描述】:
为了解释上下文,让我们以登录页面为例。
假设登录页面只允许用户在输入用户名后等待1分钟后输入密码(请假设)。
因此,首先只有用户名字段将在页面上可见。然后 1 分钟后,密码将可见。但是当页面加载时,这两个字段都存在于 HTML 中,并且当它隐藏和等待时间后它可见时,字段 ID 不会改变。
因此,以下代码在第二次操作(密码)时给出“元素不可交互”错误。
WebDriverWait(browser,10).until(EC.presence_of_element_located((By.ID, 'username'))).send_keys(usr)
WebDriverWait(browser,70).until(EC.presence_of_element_located((By.ID, 'password'))).send_keys(pwd)
如果我一次运行此代码一行,同时手动等待密码字段加载到页面上,则该代码有效。而且等待时间是60秒我已经计时了。
但是我将所有内容作为一个文件一起运行,然后它几乎在 2 秒内给出了元素不可交互的错误。可能是因为until 会立即找到元素 ID,即使它隐藏在 UI 中,但存在于 HTML 中。
我们如何处理这种延迟?
【问题讨论】:
标签: python python-3.x selenium webdriverwait