2017-03-10 1 views
1

내 웹 응용 프로그램이 반응이 좋습니다. 나는. 다른 화면 크기에 맞게 크기가 조정됩니다. 우리의 개발자는이를 위해 코드를 작성했기 때문에 xpath에 의해 발견 된 대부분의 웹 요소에는 실제로 2 개가 있습니다. 전체 화면과 모바일 중 하나 또는 작은 화면 용 중 하나입니다.Selenium 반응 형 웹 사이트에서 정확한 웹 요소를 찾을 수 있습니까?

예를 들어 Firepath를 사용하여 링크 텍스트만으로 Xpath를 검색하면 "2 개의 요소가 있음"이라고 표시됩니다. 하나만 볼 수 있으며 브라우저 창 크기를 조정하면 그 중 하나가 사라지고 다른 하나는 사라집니다. 볼 수 있습니다.

내 질문은 : 두 셀 크기 모두 하나의 셀렌 스크립트를 사용할 수 있습니까? 표시되거나 클릭 할 수있는 요소를 자동으로 사용합니다. 두 요소 중 하나만 스크립트하면 "요소를 클릭 할 수 없음"예외가 발생합니다.

if (DesktopWebElement.isVisible) 
    do the test for desktop 
else if (MobileWebElement.isVisible) 
    do the test for mobile 

모든 모바일 요소를 추가하기 위해 추가 작업이 꽤 많은 것 같다 :

또는 별도 페이지 개체에 모바일의 모든 요소를 ​​추가하고, 내 방법에게 같은 것을 만드는 데 최적의 솔루션을이야 페이지 개체의 모든 메서드를 별도로 스크립트로 작성하십시오. 시간을 절약하기 위해 두 요소를 모두 찾은 Xpath를 사용할 수있는 방법이 있는지 궁금해서 Selenium이 첫 번째 요소를 찾았습니다.

+1

사용중인 클라이언트를 기반으로 페이지 객체에'maps' (기본적으로 선택기를 포함하는 클래스)를 동적으로로드하는 전략을 보았습니다. 이 같은 소리는 기능이 동일하지만 위치가 약간 다른 비슷한 시나리오입니다. 그것은 까다 롭지 만 본질적으로'PageFactory'는 새로운'PageObjects'를 만드는 데 사용되었고, 페이지 팩토리는 어떤 속성에 기반하여 어떤 맵을 사용할지를 알아 냈습니다. 셀렉터를 모바일 또는 데스크톱과 관련되게 만들 수 있다면 비슷한 것을 할 수 있습니다. 그러나 단순하지 않았습니다. – mrfreester

답변

0

표시되는 열이 다른 버튼 외에도 화면 크기에 따라 다른 경우가 있습니다.

if (screenWidth < 1440) { 
    ... 
} 

개발자가 열을 떨어 사업 함께 일하고있는 너비에 :

내 페이지 파일 내 코드가 같은 것을 가지고 그런

public int getScreenWidth() { 
    Dimension aScreen = webDriver.manage().window().getSize(); 
    return aScreen.getWidth(); 
} 

같은 방법이 포함되어 있습니다.

표시되는 단추를 결정하는 개발자가 설정 한 화면 너비 구분 값이 있습니다. 그래서 현재 화면 너비에 따라 바탕 화면이나 모바일 버튼을 클릭합니다. 코드화 된 화면 너비 컷오프 값을 문서화하여 개발하도록 요청하십시오.

0

ExpectedConditions.visibilityOfElementLocatedBy을 시도한 적이 있는데, documents에 따르면 DOM에 표시된 요소가 표시됩니다. 이것은 즉, 더 나은 서비스를 맞는 경우 두

WebDriver driver = new FirefoxDriver(); 
WebDriverWait wait = new WebDriverWait(driver, 30); 
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocatedBy(By.xpath(".//someXpath"))); 
element.click(); 

의 또한 elementTobeClickable 상태를 시도 할 수 있습니다 우리의 보이 바로 요소와 상호 작용하는 기능을 제공합니다. 엘리먼트가 보이거나 클릭 가능한 상태로되자 마자 테스트가 느려지지는 않을 것입니다.