selenium iframe 定位

selenium iframe 定位

发现NAME属性不能定位,不具有唯一性,有三个NAME值一样的IFRAME。

当时具体情况是:IFRAME有三个属性,NAME,SRC,CLASS。三个IFRAME除了SRC值不一样外,其它两个属性的值都一样。

所以只能通过SRC值来区分IFRAME了。

最后解决是通过:dom=document.querySelector("[src=‘.....‘]")   这个语法定位成功了

举个栗子:

<iframe src="myframetest.html" />

用xpath定位,传入WebElement对象:

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@src,‘myframe‘)]"))

如:

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,‘mail.qq.com‘)][1]")));
//driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,‘mail.qq.com&v=110702‘)]")));

多层iframe 


driver.switchTo().defaultContent(); driver.switchTo().frame(1); //第一个iframe,没有id/name,可以取下标来定位

driver.switchTo().frame("layui-layer-iframe1"); //第二层iframe

driver.findElement(By.name("opinion")).clear(); //操作第二层iframe下面的元素

driver.findElement(By.name("opinion")).sendKeys("test opinion!");

driver.findElement(By.xpath("//button[@type=‘submit‘]")).click();

sleep(2000); driver.switchTo().defaultContent(); //退出iframe,返回列表操作

driver.switchTo().frame(1); //进入列表那层iframe再进行操作

自动化测试基础篇--Selenium iframe定位问题

selenium iframe 定位

关于iframe定位碰到的问题。 

相关推荐