美文网首页我爱编程
【Selenium】iframe切换,switchTo()

【Selenium】iframe切换,switchTo()

作者: Joey_GZ | 来源:发表于2018-02-14 02:06 被阅读687次

适用场景:

表达式没错的情况下,
提示定位不到元素,
需要用firepath查看是否有iframe

工具:

firefox浏览器
firepath插件

步骤:

  1. 判断元素是否在 iframe 内部
    按键【F12】,
    用firepath的箭头定位在元素上,
    查看firepath导航左上角,显示 Top Window 还是 iframe
    若显示 iframe,则该元素在iframe内部,定位元素前需要先切换到iframe

  2. 拷贝 iframe 的 id或name
    在页面任意位置按右键【查看元素】,打开查看器;
    再【Ctrl + f】、【Enter】,查找 iframe
    找到与上一步相同的iframe名称或id,拷贝。

    判断元素是否在iframe内部
  3. 切换到 iframe内部
    (1)先切换
    driver.switchTo().frame("iframe的id或名称");
    (2)接着写定位元素的代码

    //切换到frame内部
    driver.switchTo().frame("x-URS-iframe");
    
    //定位登录的元素并操作
    WebElement loginname = driver.findElement(By.xpath(".//*/input[contains(@class,'dlemail')]"));
    WebElement password = driver.findElement(By.xpath(".//*/input[contains(@class,'dlpwd')]"));
    WebElement loginbtn = driver.findElement(By.id("dologin"));
    loginname.sendKeys("testname");
    password.sendKeys("123456");
    loginbtn.click();
  1. 如果 iframe没有 id 或 name,怎么切换?
    (1)先定位 iframe的位置
    (2)再代入switch()函数切换
  WebElement iframe = driver.findElement(By.className("APP-editor-iframe"));
  driver.switchTo().frame(iframe);
  1. 从iframe内部,切换回默认页面
  driver.switchTo().defaultContent();

相关文章

网友评论

    本文标题:【Selenium】iframe切换,switchTo()

    本文链接:https://www.haomeiwen.com/subject/ckoctftx.html