0

특정 URL (Watir/WatiN에서 비교적 쉽게 구현 가능)을 열고 북마크/북마크를 클릭하면 특정 링크가 나타나는 Javascript 창이 열립니다. 나는 링크의 말씨와 URL을 검증 할 수 있기를 원한다.자바 스크립트 창을 여는 북마크릿을 프로그래밍 방식으로 클릭하고 창 내용을 확인하려면 어떻게해야합니까?

"문제"는 Internet Explorer (7 & 8)를 사용해야하며 Firefox는 Selenium IDE를 사용하지 못하게하고 Watir Recorder는 북마크/북마크 링크에 대처할 수없는 것 같습니다.

이 작업을 부분적으로 수행 한 Wintask를 사용해 보았습니다.하지만 독점적 인 도구/스크립팅 언어보다는이 작업을 위해 정기적 인 프로그래밍 언어를 사용하고 있습니다.

답변

1

Watir 또는 Selenium과 같은 도구를 사용하려는 경우 테스트 코드에서 북마크릿 JavaScript를 실행하는 것이 유일한 해결책이라고 생각합니다. 서수 북마크 열기는 일부 URL 탐색과 동일합니다.

북마크릿 JavaScript를 속성에서 가져올 수 있습니다. 예를 들어 List All Links 북마크 렛을 봅시다. 자바 스크립트는입니다 : 당신이 열려있는 창 이름이 Z6 것을 볼 수 있습니다 스크립트에서

javascript:WN7z=open('','Z6','width=400,height=200,scrollbars,resizable,menubar');DL5e=document.links;with(WN7z.document){write('<base target=_blank>');for(lKi=0;lKi<DL5e.length;lKi++){write(DL5e[lKi].toString().link(DL5e[lKi])+'<br><br>')};void(close())} 

- 우리는 우리의 코드에 필요합니다. 불행하게도 내 예 셀레늄 2.0 (일명 WebDriver을)에 그래서 나는 많은 Watir과 모르는 그것은 자바,하지만 난 같은이 Watir과에서 수행 할 수 있다고 생각 :

WebDriver driver = new InternetExplorerDriver(); 
    // Open Google page 
    driver.get("http://www.google.com.ua/"); 
    // Search for something 
    WebElement searchField = driver.findElement(By.name("q")); 
    searchField.sendKeys("webdriver"); 
    searchField.submit(); 

    // Bookmarklet script, note that javascript: was removed from original booknarklet 
    String script = "WN7z=open('','Z6','width=400,height=200,scrollbars,resizable,menubar');DL5e=document.links;with(WN7z.document){write('<base%20target=_blank>');for(lKi=0;lKi<DL5e.length;lKi++){write(DL5e[lKi].toString().link(DL5e[lKi])+'<br><br>')};void(close())}"; 

    // Execute bookmarklet script 
    ((JavascriptExecutor) driver).executeScript(script); 

    // Switch to the newly opened window 
    driver.switchTo().window("Z6"); 

    // Find all the links in the bookmarklet window 
    List<WebElement> links = driver.findElements(By.tagName("a")); 

    // And list their text - you can do anything with them 
    for (WebElement link : links) { 
     System.out.println(link.getText()); 
    } 

    driver.quit(); 

당신이 테스트 알고있는 것처럼 북마크릿. 페이지의 링크를 검사해야 할 경우 Selenium을 사용하여이 작업을 수행 할 수 있습니다. Watir이이 작업을 수행 할 수 있다고 생각합니다.

+0

감사합니다. 일부 질문은 코드입니다. 1. 윈도우 이름 - 북마클릿의 JavaScript의 일부입니까? 열린 창을 열 때마다 창에는 영구적 인 이름이 붙어 있습니까? 2. 북마크릿의 기능을 실제로 테스트하고 있습니다. 열려있는 창의 내용을 말합니다. – akapulko2020

+0

제공 한 예제에서이 함수는 열기 함수의 두 번째 인수입니다. 그리고 그것은 항상 동일 할 것입니다. 그러나 북마크릿을 시작하는 JavaScript를 검사해야하므로 북마크 코드를 알지 못합니다. 창 이름이 무작위로 생성 될 수도 있습니다. 윈도우의 이름은 window.open 함수의 두 번째 인자이고 예제에서와 같이 사용자의 케이드에서 호출 할 것이라면 그 이름을 수정할 수 있습니다 –

관련 문제