Selenium按钮文本返回IWebElement

时间:2016-09-26 12:30:59

标签: html selenium xpath

我在网页上有一个如下所示的按钮:

<button type="button" class="btn btn-primary btn xs-width-100" onclick="startScreening(0, 'A', 'UK');">Start Screening</button>`

此按钮与页面上的其他按钮结构非常相似。我试图使用Selenium WebDriver找到这个元素。我目前正在使用这个:

return UFEElement<IWebElement>(FieldType.Link, By.XPath("//button[@class=\"btn btn-primary btn xs-width-100\"]"));

我无法通过class找到,因为页面上的其他按钮具有相同的class,我无法通过onclick查找,因为该值会根据是先前的行动。

我尝试了By.XPath("//*[contains(text(), 'My Button')]")和类似的方法,但它不起作用。

我收到错误: -

  

错误:类型&#39; OpenQA.Selenium.NoSuchElementException&#39;的例外情况发生在WebDriver.dll中但未在用户代码中处理。

有没有其他方法可以找到这个元素?

2 个答案:

答案 0 :(得分:0)

为什么不使用css?

button[onclick*='startScreening']
button[onclick*='startScreening'][onclick*='UK']

答案 1 :(得分:0)

  

WebDriver.dll中出现“OpenQA.Selenium.NoSuchElementException”类型的异常,但未在用户代码中处理

这可能是时间问题,您应该尝试使用WebDriverWait等待元素可见,如下所示: -

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3))
IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.Xpth(".//button[text() = 'Start Screening']")));

或者您也可以通过元素的onclick函数的部分匹配来找到它: -

IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("button[onclick*='startScreening']")));