selenium学习之子页面(iframe)切换以及自动化速度较快的问题

在Selenium中,当元素位于iframe内时,需要使用driver.switchTo().frame()进行子页面切换,通过index、name、id或WebElement定位。完成操作后,用driver.switchTo().defaultContent()返回主页面。例如在网易相册的场景中,由于自动化速度过快,导致页面未完全加载时尝试查找元素失败。增加页面加载等待时间能解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

若定位元素在iframe内,则表示定位元素在页面的子页面中,需要完成页面切换才能找到子页面中的元素

driver.switchTo().frame();

可以通过index,name,id,WebElement定位子页面

操作完以后,需要通过driver.switchTo().defaultContent();切换回主页面

例如:

网易相册,登录页面

WebDriver dr = new FirefoxDriver();
dr.get("http://photo.163.com");
//切换到页面的子页面
dr.switchTo().frame(dr.findElement(By.xpath(
        "//iframe[@src='http://blog.163.com/newpage/ursweb/tmpl2/loginurs.html']")));
//切换到页面的子页面
dr.switchTo().frame(dr.findElement(By.id("x-URS-iframe")));
dr.findElement(By.name("email")).sendKeys("xxxxxx");
dr.findElement(By.name("password")).sendKeys("xxxxxx");
dr.findElement(By.id("dologin")).click();
//切换回主页面
dr.switchTo().defaultContent();
dr.switchTo().defaultContent();

返回到最父页面后,点击进入我的相册,一直找不到element,以为是xpath不对,各种修改都不正确,后来设置页面加载等待时间后,成功进入我的相册。自动化速度较快,页面未加载完全的原因。

如:

dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

dr.findElement(By.xpath("//div[@id='J-loginMod']/div/a[1]/span[1]")).click();

dr.quit();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值