我在网页上有一个如下所示的按钮:
<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中但未在用户代码中处理。
有没有其他方法可以找到这个元素?
答案 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']")));