Selenium在XP中找到div内的按钮

时间:2018-04-25 17:36:44

标签: scala selenium selenium-webdriver xpath webdriver

我需要找到“确认”并点击。

<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”或“元素不再存在”

如果我在设计测试时遇到错误,请你告诉我吗?

1 个答案:

答案 0 :(得分:0)

使用以下XPath:

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

normalize-space():删除放置在HTML标记之间的字符串之前和之后的空格。