2014-11-14 8 views
0

Id, XPath 및 CssSelector로 요소를 찾았지만 아무런 행운이 없었습니다. 요소를 찾고있는 동안 테스트가 시간 초과됩니다.Selenium Webdriver를 사용하여이 요소를 식별하는 방법

<div xmlns="http://www.w3.org/1999/xhtml" id="HyperlinkBetaSentry" 
style="top:0px;left:521px;height:24px;width:70px;cursor:pointer;text-align:center" 
class="DashboardHyperlink"><a target="_blank" 
href="https://salsa.sentry.com/SalsaDataSentry/wafForm.aspx?__sso=1234567890" style="color:#e6e7e8;vertical-align:middle;text-decoration:none">Beta Sentry</a></div> 

이 나는 ​​시도했다 :

var title = Driver.Instance.FindElement(By.CssSelector("#HyperlinkBetaSentry")); 
var title = Driver.Instance.FindElement(By.Xpath("//*[@id='HyperlinkBetaSentry']")); 
var title = Driver.Instance.FindElement(By.Id("HyperlinkBetaSentry")); 

답변

0

나는 By.Id가 작동해야한다고 생각합니다. 일반적으로 요소가 존재하기 전에 요소를 찾는 코드가 실행되기 때문에 (예 : DOM이 완전히로드되지 않았거나 Javascript가 DOM 또는 Ajax 요청을 변경 한 경우 등)

테스트로 확인. 요소를 찾기 직전에 코드에 중단 점을 설정하십시오. 요소가 실제로 예상대로 존재하는지 확인한 다음 찾으려는 코드를 단계별로 실행하십시오. 기회는 그것을 찾을 수 있습니다.

가끔씩 다른 원인은 요소의 위치와 다른 프레임을 조사하고있는 것입니다.

0

이 문제를 일으킬 수있는 여러 가지 문제가 있습니다.

  1. 는 태그

    VAR 제목 = Driver.Instance.FindElement (By.CssSelector ("# HyperlinkBetaSentry>에"))에 클릭을 통과;

  2. 요소로드 시간

  3. 중복 IDS 경우 2에서

는 : 요소가 볼 수 있도록 위해 당신은 어떤 명시 적 대기를 정의 할 수 있습니다. 설명문은 here을 참조하십시오.

경우 3 : xpath 또는 css with multiple attributes을 사용하여 텍스트 기반 검색을 사용할 수 있습니다.

.//*[.='Beta Sentry'] 
관련 문제