2014-03-26 2 views
0

페이스 북의 친구 목록을 찾으려면 로그인 한 후 "이름"버튼 (또는 탭)을 잡아야합니다. x 경로를 사용하여 그 이름을 어떻게 잡을 수 있습니까? 그리고 내가 한 일은 코드를 클릭하고 파이어 버그를 사용하여 "copyxpath"옵션을 클릭 한 것입니다. 그러나 그것은 효과적이다. 머리글에서 페이스 북의 사용자 이름 탭 링크를 클릭합니다셀레늄을 사용하는 xpath를 찾으십시오

@Test 
     public void testUntitled2() throws Exception { 
     driver.get(baseUrl + "/"); 
     driver.findElement(By.id("email")).clear(); 
     driver.findElement(By.id("email")).sendKeys("[email protected]"); 
     driver.findElement(By.id("pass")).clear(); 
     driver.findElement(By.id("pass")).sendKeys("password"); 
     driver.findElement(By.id("u_0_n")).click(); 
     driver.findElement(By.xpath(/html/body/div/div/div/div/div/div/div/ul/li/a/span)).click(); 
     driver.findElement(By.linkText("Friends336")).click(); 
     } 
+2

Facebook은 안정적이고 사용하기 쉽고 강력한 API를 제공합니다. 사이트를 긁지 마십시오. 자주 변경되며 화면 구문 분석이 중단됩니다. –

답변

0

다음 시도 : 나는

내 코드는 ... 자바, 웹 드라이버 ... 미리 감사를 사용하고

/html/body/div/div/div/div/div/div/div/ul/li/a/span 

XPath를 사용하는 경우 가능하면 당신이 등 클래스 이름을 활용한다 : 대신

//span[@class='headerTinymanName'] 

. xpath 도구는 때로 어리석은 xpath를 만듭니다. 내 페이스 북에서이 탭 링크는 headerTinymanName 클래스 였으므로이 이름으로 선택하면 도움이 될 것입니다. 또한

당신은 사용하여뿐만 아니라 XPath는없이 그것을 할 수 : By.className("headerTinymanName")

을 BTW 다음 링크 텍스트가 자주 변경 뭔가, 이렇게하여이 링크를 선택하려고합니다 특히 또한, 링크 텍스트로 링크를 선택 피하려고 클래스 또는 ID :

driver.findElement(By.linkText("Friends336")).click(); 
+0

효과가 있었나요? – donfuxx

+0

Re. 링크 텍스트로 선택; 나는 linktext 셀렉터를 사용하는 것을 피하는 것이 거의 없다고 생각한다. 선택기의 범위는 올바른 컨텍스트에서 사용될 때 모두 유효합니다. 해당 링크 텍스트가 자주 변경된다고 가정하면 sivea의 적용에 대한 가정이 생깁니다. 모든 신청서는 다르며 다른 접근법이 유효합니다. 레코드를 만들고 그 레코드를 목록에서 선택하는 테스트를 생각해보십시오. 해당 레코드를 선택하는 유일한 방법은 작성시 부여한 이름을 사용하는 것일 수 있습니다. 그렇다면, 링크 텍스트에 의해 완벽하게 유효한 접근 방식입니다. –

+0

그의 경우 링크 텍스트에 친구 수가 포함 된 것 같습니다. 따라서 fb 사용자가 친구를 삭제하거나 추가하면 링크 텍스트가 변경됩니다. @ RobieWareham – donfuxx

관련 문제