2

我正在编写一个 selenium 自动化机器人,我想将密钥发送到我从 iFrame 获得的输入,检查代码行:

username = bot.find_element_by_xpath("//iframe[@title='Registration form' and @class='top']")

你们能帮帮我吗?我可以单击输入,但是,在发送键时,它不起作用并取消选择输入字段。

4

1 回答 1

1

您不会将字符序列发送到元素<iframe>,而是将字符序列发送到. 由于所需的元素在 a 内,因此您必须:<input><iframe><iframe>

  • 为所需的frameToBeAvailableAndSwitchToIt诱导WebDriverWait

  • 为所需的elementToBeClickable诱导WebDriverWait

  • 您可以使用以下任一定位器策略

  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@title='Registration form' and @class='top']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@attribure_name='attribute_value']"))).send_keys("Igor Duca")
    
  • 使用CSS_SELECTOR

    driver.get('https://www.t-online.de/themen/e-mail')
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.top[title='Registration form']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[attribure_name='attribute_value']"))).send_keys("Igor Duca")
    
  • 注意:您必须添加以下导入:

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

您可以在如何从 Python Selenium 中的类中提取所有 href中找到相关的详细讨论?


参考

您可以在以下位置找到一些相关的讨论:

于 2020-09-14T17:18:46.477 回答