为什么量角器找不到元素(by.id('mat-input-0'))?

时间:2019-05-20 19:33:32

标签: javascript jasmine protractor

我是自动化的新手,我正在运行一个非常基本的测试,运行正常,但是最近它停止工作,并且我不断收到以下错误:

  

失败:脚本超时:11秒内未收到结果

我进行了查找并进行了一些基本的调试,发现Protractor没有找到我要引用的元素(element(by.id('mat-input-0'))-在spec.js代码文件中的更多内容。
我正在使用最新版本的量角器(5.4.2),以及茉莉花的最新版本(3.4.0)。我正在最新的Chrome浏览器上进行测试。

我尝试了许多在线解决方案(例如使用async / await,在配置文件中添加长allScriptsTimeoutdefaultTimeoutInterval(如下所示),使用不同的定位符调用元素(通过xpath,通过id ,通过tagName,...),尝试使用browser.waitForAngular();browser.ignoreSynchronization = true,...),但没有任何效果,所以我想知道是否有人对解决方案有任何意见? (或者真正的问题是什么?)

元素HTML

<input _ngcontent-mkt-c2="" class="mat-input-element mat-form-field-autofill-control cdk-text-field-autofill-monitored ng-pristine ng-invalid ng-touched" formcontrolname="email" matinput="" name="email" placeholder="Email" required="" type="text" id="mat-input-0" aria-invalid="true" aria-required="true">

Spec.js:

describe('Login', function(){
    it('test 1', async function(){
        await browser.get('the STG URL im testing');


    })
    it('set username', async function(){
        await element(by.id('mat-input-0')).sendKeys('root@user.com');


    })
    it('set password', async function(){
        await element(by.id('mat-input-1')).sendKeys('1234');
    })

})

Conf.js:

exports.config = {  
    seleniumAddress: 'http://localhost:4444/wd/hub',
    allScriptsTimeout: 80000,

    framework: 'jasmine',

    specs: ['spec.js'],

    SELENIUM_PROMISE_MANAGER: false,

    jasmineNodeOpts: {
      defaultTimeoutInterval: 50000
    }
  };

1 个答案:

答案 0 :(得分:0)

您收到错误的原因可能有很多,但正如您所说的,您是量角器的新手。我会说先走简单的步骤。

在全局量角器安装之后。您的计算机必须在%appdata%中具有文件夹。转到目录路径AppData \ Roaming \ npm \ node_modules \ protractor \ example。在此目录中,您必须看到两个文件conf.js和example_spec.js。在spec文件中,将url替换为您拥有的url,并针对测试执行相同的操作。

运行配置文件而不对其进行任何更改。并检查它是否工作正常,那么有一些配置问题。

请通过Protractor learning进行详细了解。