2016-09-26 1 views
0

에 의해 IWebElement을 반환 :셀레늄은 다음과 같습니다 웹 페이지에서 내가 버튼이 버튼 텍스트

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

이 버튼은 페이지의 다른 버튼에 매우 유사한 구조를 가지고있다. Selenium WebDriver을 사용하여이 요소를 찾으려고합니다. 나는 현재이 사용하고 있습니다 : 페이지의 다른 버튼이 같은 class을 가지고 있기 때문에 나는 class에서 찾을 수 따라 그 값이 변경 이전의 행동 때문에 나는 onclick에서 찾을 수

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

.

나는 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

Error :'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']"))); 
관련 문제