51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2480|回复: 2

iframe有id和name,使用selenium3.4定位时报错id或name没有

[复制链接]
  • TA的每日心情
    奋斗
    2017-9-4 10:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2017-9-2 19:18:25 | 显示全部楼层 |阅读模式
    想爬取qq空间里面的说说,需要先登录。可是qq空间登录页面有一个iframe,这个框架是有id和name的,当使用id或name定位时,还是报错。
    QQ空间登录页面的ifame信息:
    <iframe id="login_frame" name="login_frame" scrolling="no" src="https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&amp;daid=5&amp;&amp;hide_title_bar=1&amp;low_login=0&amp;qlogin_auto_login=1&amp;no_verifyimg=1&amp;link_target=blank&amp;appid=549000912&amp;style=22&amp;target=self&amp;s_url=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&amp;pt_qr_app=手机QQ空间&amp;pt_qr_link=https%3A//z.qzone.com/download.html&amp;self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&amp;pt_qr_help_link=https%3A//z.qzone.com/download.html&amp;pt_no_auth=0" height="100%" frameborder="0" width="100%"></iframe>
    代码如下:
    public class GetContext {
    public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver", ".\tools\chromedriver.exe");
    WebDriver wb = new ChromeDriver();
    wb.get("https://www.baidu.com");
    Thread.sleep(2000);
    WebElement we = wb.findElement(By.id("kw"));
    WebElement we1 = wb.findElement(By.id("su"));
    we.sendKeys("QQ空间");
    we1.click();
    Thread.sleep(2000);
    WebElement we2 = wb.findElement(By.id("content_left"));
    we2.findElement(By.partialLinkText("留住感动")).click();
    Thread.sleep(2000);
    wb.switchTo().defaultContent();
    WebElement we3 = wb.switchTo().frame("login_frame").findElement(By.id("switcher_plogin"));
    Thread.sleep(2000);
    可还是报错,报错信息:Exception in thread "main" org.openqa.selenium.NoSuchFrameException: No frame element found by name or id login_frame
    请问是什么原因呢?
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-24 13:41
  • 签到天数: 314 天

    连续签到: 1 天

    [LV.8]测试军长

    发表于 2017-9-4 08:51:55 | 显示全部楼层
    1、你看下你id=login_frame的iframe上面是否还有iframe或者id=login_frame是不是在当前页面源码中有重复id
    2、把这句话去掉wb.switchTo().defaultContent();试试

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 奖励原因:乐于助人

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-4-7 00:01:59 | 显示全部楼层
    我的有两个iframe,使用selenium 切换任意一个 都报错,selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [name="login_frame"]
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-28 22:48 , Processed in 0.064102 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表