【问题标题】:How to send keys to this element如何将密钥发送到此元素
【发布时间】:2021-04-13 09:44:01
【问题描述】:

我正在使用 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()

我尝试对 csc 和 year 使用相同的方法来更改 id,但它没有用。 怎么做?

【问题讨论】:

    标签: python google-chrome selenium-webdriver webdriver python-webbrowser


    【解决方案1】:

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

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

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

    您的代码在 Year/CSC 上失败,因为它使用 FIRST iframe(包含月份)来定位 Year 和 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 2016-04-23
      • 1970-01-01
      • 2020-04-20
      相关资源
      最近更新 更多