Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 量角器Jasmine规范描述中的浏览器功能_Javascript_Angular_Jasmine_Protractor_Httpbrowsercapabilities - Fatal编程技术网

Javascript 量角器Jasmine规范描述中的浏览器功能

Javascript 量角器Jasmine规范描述中的浏览器功能,javascript,angular,jasmine,protractor,httpbrowsercapabilities,Javascript,Angular,Jasmine,Protractor,Httpbrowsercapabilities,我想为一个测试用例生成两个单独的报告。为此,我在测试中使用了browser.getcapabilities方法来获取浏览器名称和版本 现在,当我在规范描述末尾使用这个变量时,值是undefined。browserNameforSpec在描述之前获取值。只有在等级库末尾使用此值时,才会显示未定义。我不知道发生这种情况的原因。在测试开始之前,是否有任何方法可以更改此规范描述的名称 我的代码是 let capsPromise = browser.getCapabilities(); let brows

我想为一个测试用例生成两个单独的报告。为此,我在测试中使用了
browser.getcapabilities
方法来获取浏览器名称和版本

现在,当我在规范描述末尾使用这个变量时,值是
undefined
browserNameforSpec
在描述之前获取值。只有在等级库末尾使用此值时,才会显示未定义。我不知道发生这种情况的原因。在测试开始之前,是否有任何方法可以更改此规范描述的名称

我的代码是

let capsPromise = browser.getCapabilities();
let browserNameforSpec;
capsPromise.then(function(caps) {
    console.log(caps);
    let browserName = caps.get('browserName');
    let browserVersion = caps.get('version');
    browserNameforSpec = browserName + '-' + browserVersion + '-';
    console.log(browserNameforSpec);

});

describe( '0030 Test for login' + browserNameforSpec, function () { // this.browserNameforSpec value is undefined

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });

    // 2
    it('Click onto language button', async() => {
        await click.onto(languageButton);
        await expect(languageDropdown.isDisplayed());
    });

    // 3
    it('English Language is selected', async() => {    
        await click.onto(englishLanguage);
        await expect(languageButton.getText()).toBe('English');
    });

    // 4.
    it('Correct user name is written into email field', async() => {
        await usernameField.click();
        await enter(correctUsername, into(usernameField));    
    });

    // 5.
    it('Correct password is written into password field', async() => {
            await passwordField.click().then(function () {
                passwordField.clear();
                enter(correctPassword, into(passwordField));
            })    
    });

    // 6.
    it('Login button is clicked and home page is opened', async() => {
        await click.onto(loginButton);
    });    
});
问题是: 1。如果您使用的是this.browserNameforSpec,它将随着函数上下文的更改而未定义,您已将browserNameforSpec声明为一个变量,该变量可直接用于所有函数,但您正在调用它) 2.browser.getCapabilities()返回Promise的实例,这就是执行流不同的原因。首先,它执行这个函数和descripe()。但是需要以同步方式调用它们

下面的代码正在使用另一个。然后以顺序方式执行它。请尝试使用以下代码:

让capsPromise=browser.getCapabilities();
让browserNameforSpec;
capsPromise
.然后(函数(caps){
控制台日志(caps);
让browserName=caps.get('browserName');
让browserVersion=caps.get('version');
browserNameforSpec=browserName+'-'+browserVersion+'-';
console.log(browserNameforSpec);
})
.然后(函数(){
描述('0030登录测试'+browserNameforSpec,函数(){
// 1.
它('导航到登录页面',异步()=>{
等待导航到(登录页面);
});
// 2
它('单击语言按钮',async()=>{
等待点击(语言按钮);
等待期望(languageDropdown.isDisplayed());
});
// 3
它('选择了英语',async()=>{
等待点击(英语);
wait expect(languageButton.getText()).toBe('English');
});
// 4.
它('将正确的用户名写入电子邮件字段',async()=>{
等待用户名字段。单击();
等待输入(正确用户名,进入(用户名字段));
});
// 5.
它('将正确的密码写入密码字段',async()=>{
等待passwordField。单击()。然后(函数(){
passwordField.clear();
输入(正确的密码,进入(密码字段));
})
});
// 6.
它('单击登录按钮并打开主页',async()=>{
等待点击(登录按钮);
});
});

});在您的
onPrepare()中添加以下代码

您可以按如下方式调用测试

describe( '0030 Test for login' + browser.browserName, function () {

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });

希望对您有所帮助。

该值尚未定义。这是结果1。0030测试是否正确登录未定义[chrome#01]我认为在这个测试中不会运行。因为我没有得到定义的规格!尝试删除文件夹时出现问题。没有运行规范不确定,你在做什么?测试不运行。错误为未定义规格。我以前试过这种方法。但这不起作用。我收到第一行TypeError的错误:无法读取未定义的属性'browserName'
describe( '0030 Test for login' + browser.browserName, function () {

    // 1.
    it('Navigate to the login page', async () => {
        await navigate.to.the(loginPage);
    });