2017-02-10 6 views
0

У меня есть тест-протрактор, который работает отлично в течение последних нескольких месяцев, но больше не работает на этой неделе. Он продолжает бросать элемент не является кликабельной ошибкой. Тест находит элемент кнопки на странице (который первоначально не отображается при загрузке страницы, но автоматически прокручивается до него) и пытается щелкнуть по нему, но не удается.Некоторые тесты на проталкивание начали бросать элемент, который не является кликабельной ошибкой в ​​Chrome - только в моей локальной среде

Моя среда:

node v7.4.0 
protractor v5.0.0 
Chrome 56.0.2924.87 (64-bit) 
chromedriver_2.26 
Mac OS X 10.12.3 

Образец HTML, который похож на страницу, я тестирование:

<article class="left-nav-content" ui-view=""> 
    <al-embed-flex id="flex-content" ui-view="html"> 
     <div class="settings"> 
      <div ng-if="ENABLED"> 
       <div ng-repeat="group in tree" class="settings-group" ng-if="group.types.length > 0"> 
        <ul> 
         <li ng-repeat="type in group.types"> 
          <button type="button" ng-click="connect(type)"> 
           <span class="icon-connect"></span> 
           <span>Connect</span> 
          </button> 
         </li> 
        </ul> 
       </div> 
      </div> 
     </div> 
    </al-embed-flex> 
</article> 

У меня есть метод, который в основном делает $('.settings-group li button').click(). Когда я запускаю свой тест, я могу видеть загрузку страницы, а затем вижу, что она автоматически прокручивается до кнопки (при поиске элемента? Или при нажатии на нее?), Но сразу же вызывает ошибку при попытке щелкнуть по ней:

WebDriverError: unknown error: Element <button type="button" ng-click="connect(type)">...</button> is not clickable at point (1209, 680). Other element would receive the click: <article class="left-nav-content ng-scope" ui-view="">...</article> 
    (Session info: chrome=56.0.2924.87) 
    (Driver info: chromedriver=2.26.436421 (6c1a3ab469ad86fd49c8d97ede4a6b96a49ca5f6),platform=Mac OS X 10.12.3 x86_64) 
     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: WebElement.click() 
     at Driver.schedule (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:816:17) 
     at WebElement.schedule_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:1921:25) 
     at WebElement.click (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:2002:17) 
     at actionFn (/usr/local/lib/node_modules/protractor/lib/element.ts:93:34) 
     at Array.map (native) 
     at actionResults.getWebElements.then (/usr/local/lib/node_modules/protractor/lib/element.ts:465:67) 
     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)Error 
     at ElementArrayFinder.applyAction_ (/usr/local/lib/node_modules/protractor/lib/element.ts:463:23) 
     at ElementArrayFinder.(anonymous function) [as click] (/usr/local/lib/node_modules/protractor/lib/element.ts:95:21) 
     at ElementFinder.(anonymous function) [as click] (/usr/local/lib/node_modules/protractor/lib/element.ts:841:14) 
     at myClickButtonMethod.then.elem (protractor/page/MyPage.js:26:35) 
     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 

Я не изменил этот тест вообще в прошлом месяце. Недавно я установил TypeScript для моего проекта, но эти тестовые файлы еще не были преобразованы в .ts. Интересно, что мои 2 других члена команды могут выполнить этот тест, не видя ошибки, которые я вижу, и одна из них имеет почти идентичную среду для моего.

Я искал способы решения этой проблемы, и многие предлагают явно прокручивать элементы до нажатия на них? Но я также видел, как некоторые говорят, что прокрутка выполняется автоматически, что выглядит так, когда я смотрю свой тестовый прогон. У меня также есть несколько других тестов, которые, кажется, автоматически прокручиваются до элементов, которые не видны, и они, похоже, работают нормально.

Пожалуйста, помогите. ТИА.

ответ

0

Одна из причин этого может случиться, если размер хромированных окон слишком мал.

Вы должны установить размер окна в файле конфигурации

onPrepare: function() { 
    browser.manage().window().setSize(1600, 1000); 
} 
0

Да может быть размер окна будет проблемой.

если у вас есть полное разрешение в вашей системе. затем идите ниже.

onPrepare: function() { 
browser.manage().window().setSize(1920, 1080); 
} 

в противном случае придерживаться стандартного размера 1280, 1024, чтобы всегда были видны все элементы.