【问题标题】:How to select an iframe as soon as it appears on the screen in python如何在python的屏幕上出现后立即选择iframe
【发布时间】:2021-09-27 08:37:12
【问题描述】:

我正在尝试在 iframe 中填充数据 但 iframe 出现在 15-30 秒之间的任何地方

我使用了 time.sleep(30)- 如果 iframe 在 25-30 秒左右加载,效果很好。 但有时它会在 15 秒时加载,剩下的 15 秒被浪费了

我不想在显式睡眠上浪费时间 有没有其他方法可以在 iframe 出现在视口中后立即对其执行操作?

我的代码:

driver.find_element_by_xpath("//button[@type='submit'][contains(.,'Submit')]").click()
time.sleep(30)
        
iframe = driver.find_elements_by_tag_name("iframe")
driver.switch_to_frame(iframe[3])
driver.find_element_by_xpath("something").send_keys()
driver.find_element_by_xpath(something).click()
driver.switch_to_default_content()

【问题讨论】:

    标签: python selenium iframe webdriverwait


    【解决方案1】:

    您可以使用 webdriverwait 如下:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    
    WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"(//iframe)[3]")))
    
    
    driver.find_element_by_xpath("something").send_keys()
    driver.find_element_by_xpath(something).click()
    driver.switch_to.default_content()
    

    【讨论】:

      【解决方案2】:

      您可以将其与显式等待一起使用:

      示例代码:

      wait = WebDriverWait(driver, 10)
      iframe = driver.find_elements_by_tag_name("iframe")
      wait.until(EC.frame_to_be_available_and_switch_to_it((iframe[3])))
      driver.find_element_by_xpath("something").send_keys()
      driver.find_element_by_xpath(something).click()
      driver.switch_to.default_content()
      

      进口:

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

      关于Explicit waits的官方文档

      请注意,switch_to_default_content() 已被弃用。您将不得不改用driver.switch_to.default_content()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-10
        相关资源
        最近更新 更多