如何将键发送到此元素

How to send keys to this element

我正在使用 Python selenium chrome 驱动程序,但我无法填写 csc 和信用卡信息字段的年份(看图片)。信用卡号和月份适用于此代码:

        iframe = driver.find_element_by_xpath("//iframe[@class='js-iframe']")
        driver.switch_to.frame(iframe)
        inputCC = WebDriverWait(driver, 30).until(
            lambda driver: driver.find_element_by_id("encryptedCardNumber")
        )
        inputCC.send_keys("1111222233334444")
        driver.switch_to.default_content()

        time.sleep(1)
        iframe = driver.find_element_by_xpath("//iframe[@class='js-iframe']")
        driver.switch_to.frame(iframe)
        inputCC = WebDriverWait(driver, 30).until(
            lambda driver: driver.find_element_by_id("encryptedExpiryMonth")
        )
        inputCC.send_keys("08")
        driver.switch_to.default_content()

我尝试通过更改 ID 对 csc 和年份使用相同的方法,但没有用。 怎么做?

我没有 运行 你的代码,但我检查了 HTML 和你的代码。这是我的想法:

因为//iframe[@class='js-iframe']是一个非常通用的XPATH,你需要更具体一些。在您的站点中,您有许多具有相同 XPATH 的 iframe。

您可以填写月份,因为在调用 iframe = driver.find_element_by_xpath("//iframe[@class='js-iframe']") 之后,它会为您提供包含月份的第一个 iframe。

您的代码因 Year/CSC 而失败,因为它使用第一个 iframe(包含月份)来定位年份和 CSC。


要修复,您有 2 种方法。

  1. 写入正确的 XPATH。
  • 月份 iframe://span[@data-cse="encryptedExpiryMonth"]/iframe
  • 年 iframe://span[@data-cse="encryptedExpiryYear"]/iframe
  • CSC iframe://span[@data-cse="encryptedSecurityCode"]/iframe
  1. 查找 iframe 列表
iframe_list = driver.find_elements_by_xpath("//iframe[@class='js-iframe']")
month_iframe = iframe_list[0]
year_iframe = iframe_list[1]
csc_iframe = iframe_list[2]