0

私はcalculatorメソッドを呼び出してemail()メソッドを呼び出しますが、要素はページを補完しませんし、かなり長い待ち時間がタイムアウトをスローした後です。誰も私がこれを回避する方法を知っていますか?これはかなり面倒です。私はdone()メソッドで試しましたが、出てこなかったので、まだこのメッセージがあります。テストtypescriptでタイムアウトを回避するには

app.e2e-spec.ts

import { Page } from './app.po'; 
import { Key, promise, browser, element, by } from 'protractor'; 

describe('App',() => { 
    let page: Page; 

    beforeEach(() => { 
    page = new Page(); 
    }); 

    it('should show start page',() => { 
    page.navigateTo(); 
    page.calculator(); 
    }); 

    it('address section', function(done){ 
    browser.sleep(8000); 
    page.email(); 
    }); 
}); 

app.po.ts

calculator(){ 
    var amount = element(by.xpath(".//*[@id='amount-slider-value']")); 
    amount.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "a")); 
    var amountOfLoan = Math.floor(Math.random() * 2500)+500; 
    element(by.xpath(".//*[@id='amount-slider-value']")).sendKeys(amountOfLoan); 
    browser.sleep(3000); 
    var day = element(by.xpath(".//*[@id='period-slider-value']")); 
    day.sendKeys(protractor.Key.chord(protractor.Key.CONTROL,"a")); 
    var loanDays = Math.floor(Math.random() * 30) + 1; 
    element(by.xpath(".//*[@id='period-slider-value']")).sendKeys(loanDays); 
    browser.sleep(3000); 
    element(by.xpath(".//*[@id='agreemenet-container']")).click(); 
    element(by.xpath('//div/div[2]/div[3]/div/div[2]/div[2]/button')).click(); 
    browser.sleep(3000); 
    } 

    email(){ 
    var email = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 8); 
    var emailField = email + "@test.com"; 
    element(by.xpath('//section/form/div[1]/main/dynamic-form/form/div[1]/div[2]/div[1]/div/email-field/input')).clear(); 
    browser.sleep(2000); 
    element(by.xpath('//section/form/div[1]/main/dynamic-form/form/div[1]/div[2]/div[1]/div/email-field/input')).sendKeys(emailField); 
    } 

マイログ:テストが終了するのを

A Jasmine spec timed out. Resetting the WebDriver Control Flow. 
A Jasmine spec timed out. Resetting the WebDriver Control Flow. 
    × address section 
     - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
      at ontimeout (timers.js:386:11) 
      at tryOnTimeout (timers.js:250:5) 
     - Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
      at ontimeout (timers.js:386:11) 
      at tryOnTimeout (timers.js:250:5) 
+0

をとるのであればどちらかが

it('address section', function(done){ browser.sleep(8000); page.email(); done(); }); 

か、何を行ってパラメータを削除する場合は? doneパラメーターを宣言すると、テストが完了した後に呼び出さなければなりません。 –

答えて

0

doneを呼び出す必要があります。 page.emailは()コールバック

it('address section', function(done){ 
    browser.sleep(8000); 
    page.email(done); 
}); 
+0

私はこの方法で試しましたが、うまくいきません – danio900409

+0

'email()'はコールバックを受けません。 'email'を修正してコールバックを行い、' email'の最後にコールバックする必要があります。 – user835611

+0

あなたはこれを行う方法について私を導くことができますか? – danio900409

関連する問題