python - 如何通过 Selenium 和 Python 验证元素是否存在并调用 send_keys 方法

标签 python selenium selenium-webdriver webdriver webdriverwait

这是我的 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 block 用于检查input 是否存在。

PS:另外,我不明白复数版本的 find_element_* 的用法,因为您的 HTML 代码中只有一个 input 元素。

希望对你有帮助!

关于python - 如何通过 Selenium 和 Python 验证元素是否存在并调用 send_keys 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55047139/

相关文章:

selenium - 使用 xpath 识别元素的困难

java - 如何使 TestNG 报告显示软断言失败的行

node.js - 在 webdriverio 中执行异步函数

ruby-on-rails-3.2 - 为什么我的(javascript)更改事件在我的测试中没有触发?

python - 如何编写一个将字符串转换为单个数字的函数?

python - 运行 Docker 镜像时出错。显示没有名为 cv2、request、boto3 的模块

python - 以列表理解作为值的字典理解

python - 如何为 Scipy 的 csr_matrix 指定行名和列名?

python - Selenium 没有获取 cookie

java - 如何使用 Selenium webdriver 执行 Control + Save 操作?