2016-10-16 8 views
0

내 프로그램을 웹 페이지에 앉아서 기사 내의 특정 tagName이 나타날 때까지 기다리려고합니다. 문제는 Selenium이 기사를 클릭하기 전에 두 개의 tagNames를 포함하고 있는지 확인해야합니다. 현재 코드 설정이되어있는 곳에서 아무 것도 클릭하지 않습니다. 그것은 단지 페이지에 앉아 있는데, 내가 찾고자하는 동일한 메인 tagName을 가진 기사가 두 개 이상 있기 때문에 의심됩니다. 다음은 HTML입니다.셀렌 - 식별 사이 <articles>, C#

<article> 
    <div class ="inner-article"> 
     <a href ="/shop/shirts/iycbmgtqw/x9vdawcjg" style="height:150px;"> 
     <img alt="Xrtqh7ar444" height="150" src="//d17ol771963kd3.cloudfront.net/120885/vi/xrTQH7Ar444.jpg" width="150"> 
     </a> 
     <h1> 
     <a href="/shop/shirts/iycbmgtqw/x9vdawcjg" class="name-link">EXAMPLE_CODE</a> 
     </h1> 
     <p> 
     <a href="/shop/shirts/iycbmgtqw/x9vdawcjg" class="name-link">EXAMPLE_COLOUR</a> 
     </p> 
    </div> 
</article> 

이 페이지의 다른 모든 항목에는 동일한 클래스가 있고 일부 태그에는 동일한 tagNames가 있습니다. 기사에 두 개의 tagNames의 특정 조합이있을 때 검색하고 싶습니다. xPath가 옵션이라는 것을 알았지 만 xPath를 알기 전에 코드를 작성하고 싶습니다. xPath는 항목의 이름 만 사용 가능한 정보입니다.

그리고 여기에 내가 지금 함께 일하고 있어요 코드입니다 : textBox12.Text는 "EXAMPLE_CODE"입니다

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromMinutes(10)); 


IWebElement test = driver.FindElement(By.TagName(textBox12.Text)); 
test.Click(); 

. tagName이 "EXAMPLE_CODE"인 요소가 두 개 이상 있기 때문에 WebDriver가 아무 것도 클릭하지 않는다고 가정하고 "EXAMPLE_CODE"를 먼저 찾은 다음 2 차를 확인하는 방법이 있습니다. "EXAMPLE_COLOUR" ?

감사합니다.

답변

0

By.TagName을 잘못 사용 중입니다. 태그는 찾으려고하는 요소의 유형을 나타냅니다. 링크의 경우에는 'a'입니다. 또는 div의 경우 div가됩니다. 링크에 대해 tagname으로 찾는 올바른 방법은 -입니다.

텍스트를 일치시켜야하고 xpath를 사용해야합니다. 코드가 고유하다고 가정하면 시도해야합니다.

XPath는 코드 HREF를 얻을 - //div[class='inner-article']/h1/a[.=EXAMPLE_CODE]

의 XPath는 색상 HREF를 얻을 수 - 대답에 대한 //div[class='inner-article']/h1/a[.=EXAMPLE_CODE]/following-sibling::a

+0

감사합니다! 그건 의미가 있습니다, 나는 xPath를 사용해 보겠습니다. 내가 아직도 혼란스러워하는 이유는 xpath를 둘 다 사용하여 선택할 웹 요소를 결정하는 코드를 설정하는 방법입니다. –

+0

@ClarkMcMaster 당신이 무슨 일로 당신을 발로 묶어 줄 수 있습니까? – Grasshopper

+0

내 코드는 다음과 같습니다. –