2016-06-07 1 views
0

BigBasket에서 브랜드 별 필터 시나리오를 자동화하려고하는데 내 코드가 스크롤 막대 내부에 숨겨진 브랜드 이름을 인쇄 할 수없는 상황에 처하게되었습니다.Selenium WebDriver를 사용하여 스크롤 막대 내부에 숨겨진 체크 상자의 텍스트를 가져 오는 방법은 무엇입니까?

단계 www.bigbasket.com

  1. 이동을 따르지
  2. 클릭 {(버튼
  3. 검색 애플 탐색 & 건너 뛰고 왼쪽에

    @FindAll을 브랜드의 목록을 보려면 @FindBy (xpath = "// * @ id = 'filter_brands_list']/div/div 1/li/label")})

    목록 chkBrands;

위의 코드 라인은 모든 브랜드 이름을 식별하지만 난 그들에게 아래의 코드를 사용하여 인쇄 할 때 나는

for(WebElement eachElement:chkBrands){ 
    System.out.println("No. of brands is "+chkBrands.size()); 
    System.out.println(eachElement.getText()); 
} 

당신이 날 주시기 바랍니다 수

볼 수 있습니다 만 브랜드 이름을 볼 수 있습니다 해결책 알아? 저는 셀레늄에서 아마추어로서 해결책을 생각할 수 없다는 것에 사과드립니다.

답변

2

WebElement.getText()은 화면에 표시되는 경우에만 요소의 텍스트를 반환합니다.

isDisplayed 메서드가 false을 반환하면 getText() 메서드는 비어있는 메서드를 반환합니다. WebDriver 스펙에 정의 된

Explanation with Examples Here

, 셀레늄 WebDriver는 따라서 눈에 보이지 않는 요소의 텍스트가 항상 빈 문자열로 반환됩니다, 눈에 보이는 요소와 상호 작용합니다.

그러나 어떤 경우에는, 하나는 주입 자바 스크립트 ('여기서 attributeName') element.attribute 전화하거나 에 의해 요소의는 TextContent, innerText와 또는 innerHTML을 속성에서 검색 할 수있는 숨겨진 텍스트, 를 얻을이 유용하게 사용할 수있는 같은 반환 인수 [0] .attributeName.

그래서 당신은 textContent에 의해 텍스트가

eachElement.getAttribute("textContent") 
+0

안녕 마단, 답장을 보내 주셔서 감사합니다. 그것은 나를 위해 일했다. –

+0

@SrinivasanRamu 그러면 [대답으로 받아 들일 수 있습니다] (http://meta.stackexchange.com/a/5235) – Madhan

0

이 하나를 시도 속성을 얻을 수 있습니다 :

JavascriptExecutor je = (JavascriptExecutor)driver; 
WebElement element = driver.findElement(By.xpath("Your_xpath")); 
String text_value = ((JavascriptExecutor) driver).executeScript("return arguments[0].innerHTML;",element); 
관련 문제