2014-12-10 4 views
0

셀렌으로 새 창에서 링크를 열어야합니다. 나는 다음과 같은 발견이 (우리가 WebElement이고 나는 이미 그것을 발견하고 myWait 그냥 X 밀리 초를 기다리는 수행 가정) :새 창에서 링크 열기

1)

Actions act = new Actions(driver); 
act.contextClick(we).perform(); 
myWait(1000); // allow the menu to come up 
act.sendKeys(which).perform(); 

2)

we.sendKeys(Keys.CONTROL + "t"); 

을 # 1에서 메뉴가 나타나지만 sendKeys이 작동하지 않습니다 (오, sendKeys의 "which"는 "t"입니다). # 2에서는 단순히 무시합니다.

# 1은 이미 새 창에 표시되는 메뉴입니까? driver.switchTo()해야하나요? 그렇지 않다면, 내가 뭘 잘못하고 있니?

또한 다른 방법이 있습니까? 우리는 양식 <a href=blah>의 요소이며 정기적 인 클릭이 잘 열립니다.

답변

0

하면 새 창에서 링크를 열려면 아래의 코드를 시도 할 수 있습니다 :

Actions newTab= new Actions(driver); 
WebElement link = driver.findElement(By.xpath("//xpath of the element")); 

//Opening the link in new window 
newTab.contextClick(link).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 

참고 : 당신이 그것의 제어를 얻을 수있는 링크를 새 창, 을 연 후, 당신은 필요를 이 하위 창의 핸들을 얻으려면 driver.switchTo.window("childwindowhandle")을 사용하여 전환하고 추가 작업을 수행하십시오. 그리고 그 후에 닫고 부모 창 (원래 창)으로 다시 전환하여 여기에서 조치를 취할 수 있습니다. (새 창에서 링크를 열기 전에 부모 창 핸들을 가져와야 전환됩니다. 쉽게).

+0

childwindowhandle을 얻는 것이 약간 까다 롭습니다. 맞습니까? 나는 단지 2 개의 창문이 열려 있다고 가정한다. 나는 창 핸들 루프를 통과한다. 핸들이 현재 핸들과 일치하지 않으면 자식이라고 가정합니다. 말이 돼? – user3257891

+0

예! 그것이 자식 창으로 전환하는 방법입니다. – Subh