드롭 다운 메뉴에서 마우스 오버 기능을 수행하고 싶습니다. 메뉴 위로 마우스를 가져 가면 새로운 옵션이 표시됩니다. xpath를 사용하여 새 옵션을 클릭하려고했습니다. 그러나 메뉴를 직접 클릭 할 수는 없습니다. 따라서 수동 방식으로 드롭 다운 메뉴 위로 마우스를 가져간 다음 새 옵션을 클릭합니다.
Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();
답변
실제로 ‘마우스 호버’작업을 수행하는 것은 불가능합니다. 대신 달성하려는 모든 작업을 한 번에 연결해야합니다. 따라서 다른 체인을 드러내는 요소로 이동 한 다음 동일한 체인에서 이제 밝혀진 요소로 이동하여 클릭하십시오.
액션 체인을 사용할 때는 ‘사용자처럼 행동’하는 것을 기억해야합니다.
Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).moveToElement(webdriver.findElement(By.xpath("/expression-here"))).click().build().perform();
답변
다음을 시도 할 때 이러한 답변 중 어느 것도 작동하지 않습니다.
- 메뉴 항목 위로 마우스를 가져갑니다.
- 호버 후에 만 사용할 수있는 숨겨진 요소를 찾으십시오.
- 하위 메뉴 항목을 클릭하십시오.
moveToElement 다음에 ‘perform’명령을 삽입하면 해당 요소로 이동하고 하위 메뉴 항목이 잠시 동안 표시되지만 호버가 아닙니다. 숨겨진 요소는 즉시 사라져 ElementNotFoundException이 발생합니다. 나는 두 가지를 시도했다.
Actions builder = new Actions(driver);
builder.moveToElement(hoverElement).perform();
builder.moveToElement(clickElement).click().perform();
이것은 나를 위해 작동하지 않았습니다. 다음은 나를 위해 일했습니다.
Actions builder = new Actions(driver);
builder.moveToElement(hoverElement).perform();
By locator = By.id("clickElementID");
driver.click(locator);
동작을 사용하여 호버링하고 표준 WebDriver를 클릭하면 호버링 한 다음 클릭 할 수 있습니다.
답변
이 블로그 게시물을 기반으로 Selenium 2 Webdriver에서 다음 코드를 사용하여 호버링을 트리거 할 수있었습니다.
String javaScript = "var evObj = document.createEvent('MouseEvents');" +
"evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
"arguments[0].dispatchEvent(evObj);";
((JavascriptExecutor)driver).executeScript(javaScript, webElement);
답변
이 코드는 완벽하게 작동합니다.
Actions builder = new Actions(driver);
WebElement element = driver.findElement(By.linkText("Put your text here"));
builder.moveToElement(element).build().perform();
마우스를 올린 후 공개 된 정보에 대해 원하는 다음 작업을 수행 할 수 있습니다.
답변
이 예제를 어떻게 구현할 수 있는지 확인하십시오.
public class HoverableDropdownTest {
private WebDriver driver;
private Actions action;
//Edit: there may have been a typo in the '- >' expression (I don't really want to add this comment but SO insist on ">6 chars edit"...
Consumer < By > hover = (By by) -> {
action.moveToElement(driver.findElement(by))
.perform();
};
@Test
public void hoverTest() {
driver.get("https://www.bootply.com/render/6FC76YQ4Nh");
hover.accept(By.linkText("Dropdown"));
hover.accept(By.linkText("Dropdown Link 5"));
hover.accept(By.linkText("Dropdown Submenu Link 5.4"));
hover.accept(By.linkText("Dropdown Submenu Link 5.4.1"));
}
@BeforeTest
public void setupDriver() {
driver = new FirefoxDriver();
action = new Actions(driver);
}
@AfterTest
public void teardownDriver() {
driver.quit();
}
}
자세한 답변은 여기를 참조 하십시오-http: //www.testautomationguru.com/selenium-webdriver-automating-hoverable-multilevel-dropdowns/
답변
이 질문은 Protractor (Selenium의 자바 스크립트 프론트 엔드)를 사용하여 Javascript 테스트와 동일한 작업을 수행하는 방법을 찾고 있습니다.
각도기 1.2.0 및 웹 드라이버 2.1을 사용하는 솔루션 :
browser.actions()
.mouseMove(
element(by.css('.material-dialog-container'))
)
.click()
.perform();
이것은 또한 오프셋을 허용합니다 (요소의 위와 왼쪽을 클릭하는 데 사용하고 있습니다 🙂
browser.actions()
.mouseMove(
element(by.css('.material-dialog-container'))
, -20, -20 // pixel offset from top left
)
.click()
.perform();
답변
Selenium java WebDriver를 사용하여 마우스로 가져가는 샘플 프로그램 :
public class Mhover {
public static void main(String[] args){
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://www.google.com");
WebElement ele = driver.findElement(By.id("gbqfba"));
Actions action = new Actions(driver);
action.moveToElement(ele).build().perform();
}
}