【问题标题】:Getting error while switching to another Frame切换到另一个框架时出错
【发布时间】:2021-05-08 20:21:57
【问题描述】:

错误:失败:无效参数:'id' 不能是字符串 (会话信息:chrome=88.0.4324.146) 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:25:53' 系统信息:主机:'RADA-HYD-01',ip:'192.168.0.165',os.name:'Windows 10',os.arch:'amd64', os.version:'10.0',java.version:'1.8.0_261' 驱动信息:driver.version:未知

您好,谁能帮我解决这个问题。

脚本:

browser.switchTo().frame('courses-iframe');
    element(by.css("a[href*='Login']")).getText().then(function (Result) {
      console.log(Result);
    });

【问题讨论】:

    标签: javascript angularjs protractor


    【解决方案1】:
        browser.switchTo().frame(element(by.id('courses-iframe'))).then(function(){
            element(by.css("a[href*='Login']")).getText().then(function (Result) {
              console.log(Result);
            });
    });
    

    https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_TargetLocator.html

    switchto 框架需要数字、元素和 null ,而不是字符串。其中 number 是 iindex,例如第一帧、第二帧等

    【讨论】:

      【解决方案2】:

      有人建议了以下修复:

      browser.switchTo().frame('courses-iframe');
      element(by.css("a[href*='Login']")).getText().then(function (Result) {
        console.log(Result);
      });
      

      我将它插入到我的代码中并得到以下错误:

      RangeError: 超出最大调用堆栈大小

      这基本上意味着在我的代码中的某处,我正在调用一个函数,该函数又调用另一个函数,依此类推,直到达到调用堆栈限制。

      (Taken from the following answer)

      我通过添加解决了我的问题

            capabilities: {
            browserName: 'chrome',
            'goog:chromeOptions': {
              w3c: false
             },
             
      },
      

      显然,action 类存在兼容性问题,并在 75 版之后开启 Chrome。

      希望这能有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-07-26
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多