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

如何通过Selenium和Python验证元素是否存在并调用send_keys方法,python,selenium,selenium-webdriver,webdriver,webdriverwait,Python,Selenium,Selenium Webdriver,Webdriver,Webdriverwait,这是我的HTML代码。当我单击一个按钮时,页面会显示一个带有以下代码的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_

这是我的HTML代码。当我单击一个按钮时,页面会显示一个带有以下代码的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
块用于检查
输入是否存在

另外,我不理解
find\u element.*
的复数版本的用法,因为您的HTML代码中只有一个
input
元素


希望它能帮助你

您可以使用以下代码:

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
块用于检查
输入是否存在

另外,我不理解
find\u element.*
的复数版本的用法,因为您的HTML代码中只有一个
input
元素


希望它能帮助你

如果要检查输入标记并调用
send_keys()
,则需要在
中诱导WebDriverWait,尝试捕获{}
块,以使
元素可单击()
,您可以使用以下解决方案:

  • 代码块:

    try:
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='email']"))).send_keys("Paul@Vio.com")
    except TimeoutException:
        print("Element doesn't exist")
    
  • 注意:您必须添加以下导入:

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

如果要检查输入标记并调用
send_keys()
您需要在
中诱导WebDriverWait,尝试捕获{}
块,以便
元素可点击()
,您可以使用以下解决方案:

  • 代码块:

    try:
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='email']"))).send_keys("Paul@Vio.com")
    except TimeoutException:
        print("Element doesn't exist")
    
  • 注意:您必须添加以下导入:

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

@PaulVio,我已经更新了我的答案。请再检查一遍。谢谢,为什么你不能打电话?我不明白你的意思。电子邮件。发送密钥(“”)不起作用。如果email.ifn email.main等
@palvio,发布你的完整代码(更新)。完成了,你明白了吗?当
按钮[i]点击时,
显示
div
input
我想要发送电子邮件there@PaulVio,我已更新我的答案。请再检查一遍。谢谢,为什么你不能打电话?我不明白你的意思。电子邮件。发送密钥(“”)不起作用。如果email.ifn email.main等
@palvio,发布你的完整代码(更新)。完成了,你明白了吗?当
按钮[i]点击时,
向我显示
div
input
我想在那里发送电子邮件