将鼠标悬停在元素上并使用Java等待Selenium WebDriver

dr4*_*116 8 java selenium mouseover mousehover selenium-webdriver

编辑:所以我想出了一种悬停在元素上的简单方法,但我想等待弹出一个结果.Chrome网页驱动程序悬停在元素上并且移动得太快,以至于我无法看到文本.在文本弹出之前,如何让它保持悬停状态?我查看了Wait()和until(),但我似乎无法使它们正常工作(我认为这是因为我并不是真的在等待代码中的布尔值.除非有人有一些建议吗? ).这就是我到目前为止所拥有的......

WebDriver driver = getWebDriver();
By by = By.xpath("//*[@pageid='" + menuItem + "']");
Actions action = new Actions(driver);
WebElement elem = driver.findElement(by);
action.moveToElement(elem);
action.perform();
Run Code Online (Sandbox Code Playgroud)

再次感谢大家!

干杯.

小智 10

你不能依赖睡眠,所以你应该试试这个:

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
  .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
Run Code Online (Sandbox Code Playgroud)

你在ExpectedConditions课堂上有很多方法.

这是一些信息:

希望您觉得这个有帮助.


dr4*_*116 6

似乎我在该方法的那一点上没有等待足够长的时间让文本变得可见.在它的末尾添加一个简单的睡眠功能正是我所需要的.

@When("^I hover over menu item \"(.*)\"$")
public void I_hover_over_menu_item(String menuItem)
{
    WebDriver driver = getWebDriver();
    By by = By.xpath("//*[@pageid='" + menuItem + "']");
    Actions action = new Actions(driver);
    WebElement elem = driver.findElement(by);
    action.moveToElement(elem);
    action.perform();
    this.sleep(2);
}

public void sleep(int seconds) 
{
    try {
        Thread.sleep(seconds * 1000);
    } catch (InterruptedException e) {

    }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助其他类似的绑定!

干杯!