将值输入类型="隐藏"使用Selenium + Python的字段

时间:2016-12-13 21:37:18

标签: python selenium selenium-chromedriver hidden

我一直在寻找如何解决这个问题,但似乎无法找到对我有用的东西。希望有人可以提供帮助。

我在使用python和selenium chrome浏览器的网站上,并尝试登录一个网站,其中包含以下HTML,您可以在其中输入用户名或电子邮件:

<div>
<span class="g-hdn" id="1986367435LabelSpan"><label for="1986367435">Email or username</label></span>
<label for="1986367435">Email or username</label>
</span>
<span>
<input size="40" maxlength="64" name="1986367435" id="1986367435" type="text" autocapitalize="off" autocorrect="off" placeholder="Email or username" class="fld">
</span>
</div>
<input name="runId2" type="hidden" value="AQABAAAAUCjLu3T7Joi/PEg380w56IAM9Zt6nK8i63MlZ+2gBdjoHrnTe3XAyLU4iGu37LvUilofnGbWAcTJFUjq6KhmWxEHtQVaMNfWeeaZUxXe9asa">

我无法使用ID或名称选择此输入,因为每次号码都不同,所以我想使用占位符=&#34;电子邮件或用户名&#34;来选择输入框。

每次我选择此展示位置并尝试输入一些字符串时,我会收到错误消息:

selenium.common.exceptions.ElementNotVisibleException:消息:元素不可见

这似乎是因为类型=&#34;隐藏&#34;。

有关如何选择此内容并输入文字的任何想法?

我目前正在使用以下代码选择占位符,它给出错误:

driver.find_element_by_xpath("//input[@placeholder='Email or username']").send_keys("email")

我确定该元素是否真的隐藏了,因为我可以使用以下内容选择元素(一旦ID可用):

driver.find_element_by_xpath("//*[@id='1986367435']").send_keys("email")

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

目标输入字段没有type="hidden"属性。它可能在页面重定向后最初不可见,因此您可以尝试使用ExplicitWait来解决此问题:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH,'//input[@placeholder="Email or username"]')))