【问题标题】:switch iframe selenium Python without ID在没有 ID 的情况下切换 iframe selenium Python
【发布时间】:2020-09-28 20:19:09
【问题描述】:

我正在尝试使用 Python 在 Selenium 中查找输入元素。 我找不到它,因为inputiframe 内。 我尝试切换到iframe,但我没有iframe 的ID。 代码下方:

<iframe sandbox="allow-scripts allow-same-origin" class="credit-card-iframe-cvv mt1 u-full-width" src="https://.........." frameborder="0" scrolling="no"></iframe>

这是input的代码:

<input type="tel" id="cvNumber" tabindex="0" data-shortname="cvv" maxlength="4" placeholder="XXX" class="mod-input ncss-input pt2-sm pr4-sm pb2-sm pl4-sm" autocomplete="off" value="">

不知道怎么切换,因为没有iframe的ID。

我需要在input 内写入带有发送键的 CVV 代码。

【问题讨论】:

    标签: python html selenium selenium-webdriver iframe


    【解决方案1】:

    您可以使用 xpath 来查找 iframe,因此可以使用 "//iframe[@class='credit-card-iframe-cvv mt1 u-full-width']" 之类的东西作为您的 find_by_xpath 条件。

    my_iframe=driver.find_element_by_xpath("//iframe[@class='credit-card-iframe-cvv mt1 u-full-width']")
    driver.switch_to.frame(my_iframe)
    

    上述更强大的版本是:

    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    
    my_iframe=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//iframe[@class='credit-card-iframe-cvv mt1 u-full-width']")))
    WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(my_iframe))
    

    像这样切换回默认内容:

    driver.switch_to.default_content()
    

    【讨论】:

    • 您无法将密钥发送到 iframe。首先,您识别并切换到所需的iframe。然后您识别并将密钥发送到所需的input
    • 非常感谢它的工作.....我怎样才能退出 iframe?
    • 添加driver.switch_to.default_content() 回答正文。
    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多