擅长:python、mysql、java
<p>用户名文本框位于框架内,因此要与之交互,您需要切换框架</p>
<pre><code>frames = driver.find_elements_by_tag_name("iframe")
print(len(frames))
driver.switch_to.frame(0)
wait = WebDriverWait(driver, 20)
username = wait.until(EC.presence_of_element_located((By.ID, "username")))
username.send_keys("xyz")
</code></pre>
<p>密码文本框不在框架中,因此您必须将控件切换回主页面并超出密码文本框。由于密码文本框在从帧切换后需要一些时间来准备访问,所以在此处使用显式等待。像</p>
<pre><code>driver.switch_to.default_content()
password = wait.until(EC.presence_of_element_located((By.ID, "password")))
password.send_keys("123")
</code></pre>
<p>还有一件事,因为加载URL需要时间,所以使用隐式等待而不是time.sleep()</p>