2016-06-01 4 views
0

셀레늄 및 Java 사용하여 요소를 클릭하는 데 문제가 있습니다. 표는 다음과 같습니다.Java 및 Selenium, 사용하여 xpath 요소를 클릭하십시오.

<tr class="even"> 
<td class="linked-item"> 
<a title="Imported Gatekeeper" href="/rss-servlet/remotesupport/viewgatekeeper.action?siteId=20">SJHS_OK - Technology Center - (CWx Network Connectivity)</a> 
</td> 
</tr> 
<tr class="odd"> 
<td class="linked-item"> 
<a title="Imported Gatekeeper" href="/rss-servlet/remotesupport/viewgatekeeper.action?siteId=26">SJHS_OK - Technology Center - (CWx Network Connectivity) - Backup</a> 
</td> 
</tr> 

내가 첫 번째 요소의 SJHS_OK 선택하는 것을 시도하고있다 - 다른 페이지로 연결되는 링크입니다 (CWX 네트워크 연결) - 기술 센터를. 이것은 코드의 한 부분 일 뿐이며, 이것보다 훨씬 많은 부분이 있습니다. 때로는 그렇지, 내가 firepath에 넣어 때 //*[@title='Imported Gatekeeper'][contains(.,'SJHS_OK - Technology Center - (CWx Network Connectivity)')][not(contains(.,'Backup'))] 가 가끔 작동 및 요소를 찾습니다 I에 포함 된 사용하려고하면

내 문제는 내 XPath는 이런 식으로 뭔가를 보이는 발생한다. 왜 항상 작동하지 않는지 확실하지 않습니다.

자바 내 코드는 다음과 같습니다 : I 쉽게 게이트 키퍼 변수를 변경하고 다른 게이트 키퍼를 선택할 수 있도록 내가 이런 식으로 일을 오전 String gatekeeper = "SJHS_OK - Technology Center - (CWx Network Connectivity)" DRIVER.findElement(By.xpath("//*[@title='Imported Gatekeeper']"+gatekeeper+"[not(contains(.,'Backup'))]")).click();

. 게이트 키퍼는 Excel 시트에서 가져옵니다.

여기에 잘못된 것이 있으면 도움이 될 것입니다. 그렇지 않으면 변수로 변경할 수있는 요소를 클릭하여 찾을 수있는 다른 방법이 도움이 될 것입니다.

+0

은 프로그램에서 대기 또는 수면을 시도하고 시도 할 수 있습니다. – Vivek

답변

0

xpath가 때때로 찾아 내고 때때로 그렇지 않은 경우 문제는 아마도 누락 된 것일 수 있습니다. 클릭 할 때 요소가 없거나 표시되지 않으면 코드에서 오류가 발생합니다. 그것을 시도 :

WebElement yourElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@title='Imported Gatekeeper'][contains(.,'SJHS_OK - Technology Center - (CWx Network Connectivity)')][not(contains(.,'Backup'))]"))); 

@Edit

대기가 작동하지 않는 코드 스틸 때로는 아니오 가끔 작업하고 테 페이지가 renderized 때, 텍스트를 칠하는 공간의 상수가 더있다 . 이 XPath는 선택을 시도해보십시오

또한
//a[@title='Imported Gatekeeper'][text()[contains(., 'SJHS_OK')]][contains(., 'Technology Center')][contains(., 'CWx')][contains(., 'Network')][contains(., 'Connectivity')][not(contains(.,'Backup'))] 

, 테스트 작동하지 크롬 콘솔에서 구글 크롬 콘솔에서 모든 선택기를 사용해보십시오. $x("your xpath here")

+0

기다림을 시도했지만 문제가 없습니다. 나는 그것을 줄 때가있다. 나는 때때로 길에서 일하는 때가 있고 때로는 그렇지 않기 때문에 경로에 문제가있는 것처럼 느껴진다. 그리고 그렇지 않을 때 나는 실제로 차이를 볼 수 없다. –

+0

나 awnser를 업데이 트 –

+0

내가 xpath 문제가 아닌 것 같아요. 아니면 xpat h 작동 여부. 때로는 작동하고 때로는 아니지만 외부 간섭이 있습니다. –

0

xpath를 사용하여 xpath를 테스트 할 수 있습니다. xpath를 사용하지 않아도됩니다. 당신이 Java8 대신이 시도 사용하는 경우

driver.findElements(By.tagName("a")).stream() 
    .filter(td -> !td.getText().contains("Backup")) 
    .findFirst().get().click(); 

요소 중 하나의 방법을 찾을 수 있다면, 그 아래에 뭔가가있을 수있다, 어쩌면 요소가 완전히로드되지 않았습니다? 오류가 발생하면 stacktrace를 제공 ​​할 수 있습니까?

0

내가 SJHS_OK - Technology Center - (Xpath에서 CWx 네트워크 연결을 직접 복사 한 경우 작동 할 수 있음을 알았지 만, 직접 입력 한 경우 비교할 때 정확하게 입력해도 작동하지 않습니다.) 결론은 공간과 관련이 있다는 것입니다. 공백없이 자르면 오류가 사라질 것입니다.

관련 문제