2017-06-02 8 views
0

これは数時間前から私はグーグルでテストしていますが、私はUIテストをポップアップウィンドウに集中させるのに非常に苦労しています。この段階では、単にPayBillをクリックしてポップアップウィンドウ(即座に読み込まれる)を待ってから、キャンセルをクリックしてください。angle4ポップアップウィンドウに焦点を当てて投光器

paybillButton.click(); 
browser.sleep(500); 

browser.getAllWindowHandles().then(function (handles) { 
    newWindowHandle = handles[1]; 
    browser.switchTo().window(newWindowHandle).then(function() { 
    cancelButton.click(); 
    }); 
}); 

をしかし、それはエラー

browser.switchTo()間と.window(newWindowHandle).then ...失敗し続けて:

私のコードの最新バージョンは、読み込み

Failed: null value in entry: handle=null 
WebDriverError: null value in entry: handle=null 
    at Object.checkLegacyResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:505:15) 
    at parseHttpResponse (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:509:13) 
    at doSend.then.response (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/http.js:440:13) 
    at process._tickCallback (internal/process/next_tick.js:103:7) 
From: Task: WebDriver.switchTo().window(undefined) 
    at thenableWebDriverProxy.schedule (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:816:17) 
    at TargetLocator.window (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1755:25) 

は私もFailed: null value in entry: name=null error while switching Popup windowから以下のコードを試してみました...

function windowCount(count) { 
    return function() { 
    return browser.getAllWindowHandles().then(function (handles) { 
     return handles.length >= count; 
    }); 
    }; 
}; 
browser.wait(windowCount(2), 10000); 

browser.getAllWindowHandles().then(function (handles) { 
    browser.switchTo().window(handles[1]); 
    cancelButton.click(); 
}); 

しかし、このエラーを返すのthats:

Failed: Wait timed out after 10002ms 
TimeoutError: Wait timed out after 10002ms 
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2107:17 
    at ManagedPromise.invokeCallback_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1366:14) 
    at TaskQueue.execute_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2970:14) 
    at TaskQueue.executeNext_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2953:27) 
    at asyncRun (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2813:27) 
    at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:676:7 
    at process._tickCallback (internal/process/next_tick.js:103:7) 
From: Task: <anonymous wait> 
    at scheduleWait (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2094:20) 
    at ControlFlow.wait (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2408:12) 

答えて

0

switchTo方法はセレンwebdriverをswitchToメソッドのラッパーです。 switchToメソッドはTargetLocatorオブジェクトを返し、TargetLocatorオブジェクトはwindowメソッドを返しません。これを行う正しい方法は、frame methodを使用することです。

browser.getAllWindowHandles().then((handles) => { 
    let newWindowHandle = handles[1]; 
    browser.switchTo().frame(newWindowHandle).then(() => { 
    cancelButton.click(); 
    }); 
}); 
関連する問題