java
  • selenium-webdriver
  • selenium-grid
  • remotewebdriver
  • 2013-03-25 1 views 0 likes 
    0

    일부 자바 스크립트를 실행 한 후 WebElements의 가시성을 테스트하려고 시도했습니다. WebElements는 다음 XPath의에 의해 발견됩니다셀레늄 RemoteWebDriver가 웹 요소에 대한 자바 스크립트 변경을 인식하지 못하는 것 같습니다.

    public static final String MOBILE_APPS_RUNNING_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-running']"; 
    public static final String MOBILE_APPS_FUELBAND_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-fuelband']"; 
    public static final String MOBILE_APPS_BASKETBALL_APP_XPATH = "//*[@id='app_slider']/ul/li[1]/a[@class='app nike-basketball']"; 
    public static final String MOBILE_APPS_TRAINING_APP_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-training']"; 
    public static final String MOBILE_APPS_KINECT_APP_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-kinect']"; 
    public static final String MOBILE_APPS_MORE_APPS_XPATH = "//*[@id='app_slider']/ul/li[2]/a[@class='app nike-more']"; 
    

    처음 세 요소는 페이지가로드 될 때 볼 수 있습니다. javascript 함수를 사용하면 요소가 -moz-transform: translate3d(-1084px, 0px, 0px); 스타일 속성을 통해 이동하므로 다음 세 요소가 표시됩니다. 이는 변경 사항을 선택하는 로컬 Firefox 브라우저에서 잘 작동하지만 그리드 설정에서 Firefox 브라우저에 첨부 된 RemoteWebDriver를 사용하려고하면 요소가 더 이상 표시되지 않습니다. 스크린 샷을 통해 요소가 RemoteWebDriver에 여전히 표시되어 있는지 확인했지만 업데이트 된 DOM에서 가져온 요소가 아니라 RemoteWebDriver에 의해 요소가 캐시되고 있다고 판단됩니다.

    이 방법을 확인할 수 있습니까? 그렇다면 요소를 볼 수 있도록 DOM을 새로 고치는 방법은 무엇입니까?

    명확히하기 : 나는 자바 스크립트가 실행 된 후에 driver.findElement(By.xpath(...)) 메서드를 사용하고, 요소가 보이지 않을 때까지 기다린다.

    답변

    0

    파이어 폭스 버전이 두 환경간에 일관성이 있었지만 셀렌 서버 (및 FirefoxDriver)의 버전이 내 로컬 컴퓨터와 그리드간에 다른 것으로 나타났습니다. 내 로컬 컴퓨터 (의도대로 작동)에서 셀레늄 -server_2.2.0을 사용하고 있는데 그리드는 셀레늄 -server_2.28.0 (의도 한대로 작동하지 않음)을 사용하고있었습니다. 효과가 있었던 차이점 중 하나는 FirefoxDriver에서 Firefox 기본 이벤트를 사용하는 변경이었습니다. 나는 selenium-server_2.31.0의 업데이트가 의도 한대로 기능 (및 가시성)을 복원했음을 확인했다.

    관련 문제