python - 如何验证元素是否存在并通过 Selenium 和 Python 调用 send_keys 方法
问题描述
这是我的 HTML 代码。当我单击一个按钮时,页面会显示一个带有以下代码的 div:
<label for="email"> "Add an email address"
<input name="email" id="email" class="mb3 ember-text-field ember-view"type="email">
</label>
我想做的第一件事是检查我是否有<input>
. 如果是,我想做send_keys()
.
我试过这样的事情:
buttons = (driver.find_elements_by_css_selector(".button-secondary-medium"))
for i in range(len(buttons)):
buttons[i].click()
y = randint(5, 9)
time.sleep(y)
try:
email = ui.WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, "email")))
email.send_keys(" paul@yahoo.com")
except:
print("no input")
我有一个按钮列表,每个按钮显示一个空白div
,有时按钮显示一个带有输入电子邮件的 div。
解决方案
您可以使用以下代码:
from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
buttons = driver.find_elements_by_css_selector(".button-secondary-medium")
for button in buttons:
button.click()
try:
email = ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "email")))
email.send_keys("paul@yahoo.com")
except:
print("There is no input element.")
我在这里使用了显式等待和 10 秒等待元素可点击且难以处理。该try/except
块用于检查是否input
存在。
PS:另外,我不明白 复数版本的用法find_element_*
,因为您的 HTML 代码中只有一个input
元素。
希望对你有帮助!
推荐阅读
- python - 通过排除表来处理 Automap 错误
- php - 为什么我的页面使用表单过滤器冻结
- php - 不推荐使用:使用 php 7 不推荐使用函数 ereg()
- airflow - 无法从 apache 气流 python dag 访问本地文件系统
- swift - 如何为点击手势优化 SKSpriteNode 的形状?
- r - 如何在 R 中定义多元函数
- python - 如何在不导入模块/类或不知道 Python 中的文件架构的情况下在不同的模块/类中使用模块/类函数/方法?
- mysql - 在 phpmyadmin 中自动填充 current_user
- microsoft-graph-api - Microsoft Graph API 分页 Users.NextPageRequest.GetAsync() 返回错误并显示无效的下一页搜索请求
- javascript - JavaScript 未在我的网站上运行/工作/加载