2016-09-26 2 views
0

У меня есть кнопка на веб-странице, которая выглядит следующим образом:Селен вернуться IWebElement по кнопке текст

<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')]") и другие подобные методы, но он не работает.

Я получаю сообщение об ошибке: -

Error: An exception of type 'OpenQA.Selenium.NoSuchElementException' occurred in WebDriver.dll but was not handled in user code.

Есть еще один способ, чтобы найти этот элемент?

+0

В чем проблема с этим локатором 'By.XPath (" // * [contains (text(), 'Start Screening')] ")' ?? есть ли какое-либо исключение? –

+0

Ошибка: 'Исключение типа 'OpenQA.Selenium.NoSuchElementException' произошло в WebDriver.dll, но не было обработано в коде пользователя'. – Ross

+0

Вы искали фрейм/iframe ?? убедитесь, что этот элемент не находится внутри какого-либо фрейма/iframe? –

ответ

0

Почему бы не использовать css?

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

0

An exception of type 'OpenQA.Selenium.NoSuchElementException' occurred in WebDriver.dll but was not handled in user code

Это может быть превышено время вопрос, вы должны попробовать использовать 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']"))); 
Смежные вопросы