тестирование веб-драйвера Safari с помощью Selenium - PullRequest
0 голосов
/ 12 апреля 2019

Я использую 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!");
      }
  });
};
...