【问题标题】:Entering values into iframe python selenium shopify payments在 iframe python selenium shopify 支付中输入值
【发布时间】:2020-06-20 18:49:42
【问题描述】:

我正在尝试使用 selenium + python 将信用卡值输入到 Shopify 网站。用于输入卡片值的框位于 iframe 中,我不确定如何切换到此 iframe。

我目前有这个代码:

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,
                   '//*[@id="card-fields-number-950kvfi9pbn00000"]'))
                   ).send_keys(card_number, Keys.TAB, name_on_card, Keys.TAB,expiry_date, cvv)
driver.switch_to.default_content()

但这会返回错误:

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(...

selenium.common.exceptions.TimeoutException: Message: 

如此有效,找不到元素...

这是页面的 HTML: (https://gyazo.com/80d9d3c941c62ededc81d5fbc327a71f)

我想要一些有关如何访问此元素的帮助,我还尝试通过将 id 更改为此标记的父级来访问它。我还添加了time.sleep(20),因此我可以确定页面已完全加载,但我仍然遇到同样的错误。

【问题讨论】:

    标签: python selenium iframe shopify


    【解决方案1】:

    您可以使用switch_to_frame 方法切换到 iframe。

    iframe = driver.find_element(By.XPATH, '//*[@id="card-fields-number-950kvfi9pbn00000"]')
    driver.switch_to_frame(iframe)
    #You're now 'in' the iframe
    

    【讨论】:

    • 谢谢,我使用了你的一些代码,但实际上问题的主要原因是元素的 id 和名称是动态的,并且会随着每个唯一的结帐窗口而变化。
    • 是的,你没有提供 URL,所以我无法检查,但我怀疑可能也是这种情况,很高兴我能提供帮助 :)
    【解决方案2】:

    问题在于元素的名称和 ID 是动态的,并且会随着每个唯一的结帐窗口而变化,这是一个有效的代码:

    iframe = driver.find_element_by_class_name('card-fields-iframe')
    driver.switch_to.frame(iframe)
    driver.find_element_by_name('number').send_keys(card_number, Keys.TAB,name_on_card,Keys.TAB,expiry_date,Keys.TAB, cvv)
    driver.switch_to.default_content()
    

    【讨论】:

      【解决方案3】:

      你应该试试 driver.switch_to_frame("Insert 'Name'of Iframe here"),然后找到你的元素。找到元素后。你可以试试:

      ELEMENT.send_keys(card_number, Keys.TAB, name_on_card, Keys.TAB,expiry_date, cvv)
      driver.switch_to.default_content()
      

      但我建议搜索每个元素而不是使用 tab 键。由于网站可以随时更改,因此将来更容易修复或调整。本质上,您可以使用 if 语句来检测字段,如果存在,请填写它们。

      【讨论】:

        猜你喜欢
        • 2012-04-11
        • 1970-01-01
        • 1970-01-01
        • 2018-03-22
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 2014-06-11
        相关资源
        最近更新 更多