Кнопка поиска селена внутри div с помощью XPath - PullRequest
0 голосов
/ 25 апреля 2018

Мне нужно найти «Подтвердить» и нажать.

<div class="sidebar-element-confirm">
  <ui-button class="btn btn-xm sidebar-element-confirm" type="button">
  Confirm
  </ui-button>
</div>

Мои решения (ни одно из них не работает - нет исключений, нет ошибок):

private val element1 = "//div[@class='sidebar-element-confirm']/ui-button[contains(text(),'Confirm')]" 
private val element2 = "//div[@class='sidebar-element-confirm']/ui-button[@type='button']"
driver.findElement(By.xpath(element1)) --does not work
driver.findElement(By.xpath(element2)) --does not work

МожетСкажите, пожалуйста, что не так с моим XPath?


Обновлено # 1:

Chrome (XPath) дает мне:

//*[@id="right-sidebar"]/div/div[2]/ui-button

Однако этот XPath не работал:

val chrome_xpath = "//*[@id='right-sidebar']/div/div[2]/ui-button"   
webDriver.get(URL)
searchId.sendKeys(Id) --put id of order
searchId.sendKeys(Keys.ENTER) -- ENTER
Thread.sleep(1000)

... заказ загружается, затем мне нужно нажать «Подтвердить».

assert(webDriver.findElement(By.xpath(chrome_xpath).isInstanceOf[WebElement])  # true
webDriver.findElement(By.xpath(chrome_xpath)).click` 

Кнопка не была нажата,Исключение:

StaleElementReferenceExpection: Элемент больше не действителен.Брошенные в строку, когда я пытался нажать на кнопку

Обновлено # 2:

private val confirmButton = ".btn.btn-sm.btn-block" webdriver.get(URL) login --and Spinning ExplicitWait until some element is found on the page findElement -- put there an Order ID and press Enter --and Spinning ExplicitWait until Order is appeared on the page findElement(By.cssSelector(confirmButton)).click -- passed only once! --and Spinning ExplicitWait

ОстальноеМои попытки не увенчались успехом либо из-за того, что драйвер IE остановился, либо из-за StaleElementException или из-за того, что элемент больше не существует1040 *

1 Ответ

0 голосов
/ 25 апреля 2018

Используйте следующую XPath:

1. //*[normalize-space()='Confirm'] 
2. //div[normalize-space()='Confirm'] 
3. //div//ui-button[normalize-space()='Confirm']

normalize-space(): удаление пробелов до и после строки, помещенной между тегами HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...