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이이 작업을 수행 할 수 있다고 생각합니다.
감사합니다. 일부 질문은 코드입니다. 1. 윈도우 이름 - 북마클릿의 JavaScript의 일부입니까? 열린 창을 열 때마다 창에는 영구적 인 이름이 붙어 있습니까? 2. 북마크릿의 기능을 실제로 테스트하고 있습니다. 열려있는 창의 내용을 말합니다. – akapulko2020
제공 한 예제에서이 함수는 열기 함수의 두 번째 인수입니다. 그리고 그것은 항상 동일 할 것입니다. 그러나 북마크릿을 시작하는 JavaScript를 검사해야하므로 북마크 코드를 알지 못합니다. 창 이름이 무작위로 생성 될 수도 있습니다. 윈도우의 이름은 window.open 함수의 두 번째 인자이고 예제에서와 같이 사용자의 케이드에서 호출 할 것이라면 그 이름을 수정할 수 있습니다 –