Я использую javascript для проверки страницы Safari с использованием Selenium.У меня есть js, открывающий страницу, печатающий в поле ввода, нажимающий кнопки ... Но мне нужно проверить, правильно ли были введены данные, получая значение элементов dom.
Я пробовал:
var webdriver = require('selenium-webdriver'),
By = webdriver.By;
var driver = new webdriver.Builder()
.forBrowser('safari')
.build();
driver.get('http://server.com/testPage.html')
.then( () => driver.sleep( 2000 ))
.then( () => driver.findElement( By.id('typeHere') ).sendKeys('webdriver'))
.then( () => driver.sleep( 3000 ))
.then( () => driver.findElement( By.id('clickHere') ).click() )
.then( () => driver.sleep( 2000 ))
.then( () => {
let tmp = driver.findElement( By.id('typeHere') ).getAttribute('value');
console.log('found:', tmp);
})
.then( () => driver.quit())
;
, который регистрирует:
found: Promise { <pending> }
(node:10883) UnhandledPromiseRejectionWarning: NoSuchSessionError
проверяемая страница -
<html><body>
<input id="typeHere" value="default"/><br/>
<button id="clickHere" onclick="alert('a click, happy day!')">click me</button>
</body></html>
ОБНОВЛЕНИЕ.это работаетМне нужно больше узнать об обещаниях!
driver.get('http://server.com/testPage.html').then(run());
function run() {
var foundValue = driver.findElement( By.id('typeHere') ).getAttribute('value');
foundValue.then((value) => {
if(value === 'default'){
console.log("GOT IT!");
}
});
};