[英]Cannot enter text into input field (Python + Selenium)
我在网页上有以下HTML代码段:
<div class="f0n8F ">
<label for="f395fbf9cde026" class="_9nyy2">Phone number, username, or email</label>
<input class="_2hvTZ pexuQ zyHYP" id="f395fbf9cde026" aria-describedby="slfErrorAlert" aria-label="Phone number, username, or email" aria-required="true" autocapitalize="off" autocorrect="off" maxlength="75" name="username" type="text" value="">
</div>
我正在尝试使用以下代码输入文本:
username_element = WebDriverWait(driver, 5).until(expected_conditions.visibility_of_element_located((By.ID, "f395fbf9cde026")))
username_element.send_keys('abc')
即使尝试(By.CLASS, "class _2hvTZ pexuQ zyHYP")
, (By.XPATH, "//*[@id=\\"f1798b97d45a38\\"]")
,我仍然收到TimeOut异常。
如果我尝试By.NAME, "username"
,则在前一页上还有一个名为“用户名”的元素,因此在执行上述代码行之前,在前一页上输入了“ abc”。
值得注意的是,如果我尝试过driver.implicitly_wait(x)
,就不会发生任何等待。
所需元素是动态元素,因此要发送字符序列,您必须为element_to_be_clickable()
诱导WebDriverWait ,并且可以使用以下两种定位策略之一 :
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[aria-describedby='slfErrorAlert'][name='username']"))).send_keys("KOB")
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@aria-describedby='slfErrorAlert' and @name='username']"))).send_keys("KOB")
注意 :您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
尝试使用应该唯一的xpath
。
username_element = WebDriverWait(driver, 5).until(expected_conditions.element_to_be_clickable((By.XPATH, "//input[@name='username'][@aria-describedby='slfErrorAlert']")))
username_element.send_keys('abc')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.