NightwatchJS + Cucumber не может найти через xPath

Я использую Nightwatch-огурец и объекты страницы, и я изо всех сил пытаюсь заставить локаторы найти мой элемент через Xpath.

элемент выглядит так:

<div class="portal-layout-section" style="width: 1215px; height: 730px; overflow: hidden;">
<div class="item bordered portal-hoverable" style="width: 243px; height: 365px; background-image: url(http://path/to/img/Ironman.jpeg;);"></div>
<div class="item bordered portal-hoverable" style="width: 243px; height: 365px; background-image: url(http://path/to/img/FriendsWithBenefits.jpeg);"></div>
<div class="item bordered portal-hoverable" style="width: 243px; height: 365px; background-image: url(http://path/to/img/Inception.jpeg);"></div></div>
</div>

Мой шаг содержит этот код:

var anonbrowse = this.page.anonbrowse();
 anonbrowse  
    .waitForElementVisible('@cover_images_ironman',5000)
    .click('@cover_images_ironman')

А объект Pageobject выглядит так:

module.exports = {
elements: {
     cover_images_ironman: {
       selector : '//div[contains(@style,"http://path/to/img/Ironman.jpeg")]',
       locateStrategy: "xpath"          

    },
 }
}

Я продолжаю получать ошибку тайм-аута независимо от того, как долго я оставляю ожидание:

Timed out while waiting for element <//div[contains(@style,"http://path/to/img//Ironman.jpeg")]> to be present for 5000 milliseconds. - Expected "visible" but got: "not found"
    at Object.<anonymous> (c:\nightwatxh\features\step_definitions\anonbrowse_steps.js:21:3)
    at next (native)
    at next (native)

У кого-нибудь есть идеи, что я делаю неправильно здесь?


person spidee76    schedule 22.12.2016    source источник
comment
Имеет ли значение упрощение до //div[contains(@style,"Ironman.jpeg")]? Спасибо.   -  person alecxe    schedule 22.12.2016
comment
спасибо, только что попробовал, и все равно не повезло. Я пробовал xpath, который я использую в chrome-плагине «xpath helper», и он выделяет правильный элемент, поэтому я знаю, что xpath верен.   -  person spidee76    schedule 23.12.2016


Ответы (1)


попробуйте такой локатор:

selector: '//div[contains(@style, "background-image: url(http://path/to/img//Ironman.jpeg))"]'

я мог бы ошибиться где-нибудь с помощью "" или ''

person Hikaryu    schedule 27.12.2016
comment
Спасибо, да, пробовал, но не повезло, nightwatchjs может идентифицировать элемент, поскольку я сделал утверждение, но он просто не может щелкнуть по нему. Я не уверен, что это как-то связано с тем, что этот Div является компонентом React. - person spidee76; 28.12.2016
comment
попробуйте селектор css, подобный этому .item.bordered.portal-hoverable:nth-child(1), он должен работать, и мы узнаем, есть ли проблема с элементом или просто с nightwatch - person Hikaryu; 03.01.2017
comment
Спасибо за попытку, но все равно не повезло. Это утверждение работает: .expect.element('@cover_images_ironman').to.have.css('background-image').which.contains('url("http://Ironman.jpeg")'); Но когда я нажимаю, оно все еще не работает: .click('@cover_images_ironman') - person spidee76; 04.01.2017