Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Selenium和python切换到iframe_Python_Selenium_Selenium Webdriver_Iframe_Webdriver_Css Selectors_Xpath - Fatal编程技术网

通过Selenium和python切换到iframe

通过Selenium和python切换到iframe,python,selenium,selenium-webdriver,iframe,webdriver,css-selectors,xpath,Python,Selenium,Selenium Webdriver,Iframe,Webdriver,Css Selectors,Xpath,如何在selenium knowing only中切换到此iframe <iframe name="Dialogue Window"> 您可以使用XPath来定位: iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']") driver.switch_to.frame(iframe) driver.switch_to.default_content() 然后切换到: iframe =

如何在selenium knowing only中切换到此iframe

<iframe name="Dialogue Window">

您可以使用XPath来定位

iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']")
driver.switch_to.frame(iframe)
driver.switch_to.default_content()
然后
切换到

iframe = driver.find_element_by_xpath("//iframe[@name='Dialogue Window']")
driver.switch_to.frame(iframe)
driver.switch_to.default_content()

以下是如何切换回默认内容(在
之外):


根据
元素的HTML,它将name属性设置为对话窗口。因此,要在
中切换,您需要使用该方法,并且可以使用以下任一方法:

  • 使用
    节点的name属性,如下所示:

    # driver.switch_to.frame(‘frame_name’)
    driver.switch_to.frame("Dialogue Window")
    
    driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
    
  • 使用通过名称属性标识的
    ,如下所示:

    # driver.switch_to.frame(‘frame_name’)
    driver.switch_to.frame("Dialogue Window")
    
    driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
    
  • 使用通过以下方式识别的

    # driver.switch_to.frame(‘frame_name’)
    driver.switch_to.frame("Dialogue Window")
    
    driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
    
  • 使用通过以下方式识别的

    # driver.switch_to.frame(‘frame_name’)
    driver.switch_to.frame("Dialogue Window")
    
    driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
    
  • 理想情况下,对于所需的帧,您应该使用as
    frame\u将其连接到\u be\u available\u,并将\u切换到\u it()
    ,如下所示:

    # driver.switch_to.frame(‘frame_name’)
    driver.switch_to.frame("Dialogue Window")
    
    driver.switch_to.frame(driver.find_element_by_name('Dialogue Window'))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("iframe[name='Dialogue Window']"))
    
    driver.switch_to.frame(driver.find_element_by_css_selector("//iframe[@name='Dialogue Window']"))
    
    • 使用
      名称

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"Dialogue Window"))) 
      
    • 使用
      CSS\u选择器

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name='Dialogue Window']")))
      
    • 使用
      XPATH

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@name='Dialogue Window']")))
      
  • 要切换回父帧,可以使用以下代码行:

    driver.switch_to.parent_frame()
    
    driver.switch_to.default_content()
    
  • 要切换回顶层浏览上下文/顶层窗口,可以使用以下代码行:

    driver.switch_to.parent_frame()
    
    driver.switch_to.default_content()
    

tl;博士

很好的通用解决方案,特别是如果iframe必须以
名称以外的其他名称作为目标,这是唯一指定转换的方法。为此,您需要做很多工作。我被困在这个问题上好几个小时了,因为我花了很长时间才发现我在一个iframe中,而你的解决方案正是我不想再讨厌我的工作所需要的哈哈。请看:这样的期望是,用户提问时不仅要研究回答他们自己的问题,还要分享研究、代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见: