selenium由于iframe 定位不到元素

iframe在java中使用的方法; 

driver.switchTo().parentFrame();//子frame切回到父frame

driver.switchTo().frame();//切入frame中

driver.switchTo().defaultContent();//从frame中切回主文档

想要定位iframe并切进去,可以通过如下代码:

driver = webdriver.Firefox();
driver.switch_to.frame(0)  # 1.用frame的index来定位,第一个是0
driver.switch_to.frame("frame1")  # 2.用id来定位
driver.switch_to.frame("myframe")  # 3.用name来定位
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))  # 4.用WebElement对象来定位

通常采用id和name就能够解决绝大多数问题。但有时候frame并无这两项属性,则可以用index和WebElement来定位:

  • index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位
  • WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象

举个例子来切入iframe

selenium由于iframe 定位不到元素_第1张图片

用xpath定位,传入WebElement对象:
driver.switchTo().frame(driver.findElement(By.xpath(("//iframe[contains(@src,'/gdgs/single_tree/list/eova_menu')]"))));

 当我们遇到页面有三个iframe,在iframe间切换时,该怎么做呢?

selenium由于iframe 定位不到元素_第2张图片

当我切入菜单