Selenium Action类没有在同一个webelement上第二次鼠标悬停

时间:2017-12-21 04:41:48

标签: javascript java c# selenium selenium-webdriver

Actions action = new Actions(Driver);
action.MoveToElement(webelement).ClickAndHold().Perform();

我使用上面的代码将鼠标悬停在Web元素上。它工作正常。 当我尝试使用上面的代码第二次对同一个Web元素进行鼠标悬停时,它无法正常工作。

他们有什么理由说第二次使用mousehover吗?

5 个答案:

答案 0 :(得分:0)

您可能需要释放鼠标,如下所示。

Actions action = new Actions(Driver); 
action.MoveToElement(webelement).ClickAndHold().Release().Perform();

如果您只想鼠标悬停,则无需点击并按住。您可以使用以下代码将鼠标悬停在元素上。

Actions action = new Actions(Driver); 
action.MoveToElement(webelement).perform();

答案 1 :(得分:0)

您正在使用的

ClickAndHold()方法未释放鼠标。

尝试使用以下代码:

WebElement elem = driver.FindElement(--USE YOUR BY ELEMENT HERE--);

Actions builder = new Actions(driver);  
builder.MoveToElement(elem).Perform();//this will hover to YOUR ELEMENT
Thread.Sleep(1000);                   //avoid using this type of wait. Try to use wait until.

driver.FindElement(--USE HERE YOUR SEPECIFIC ELEMENT--).Click();  //this will click on SEPECIFIC ELEMENT

答案 2 :(得分:0)

你可以尝试这种方法,我正在使用它,每次都适合我:

public static void moveTo(WebElement element){
    Actions action=new Actions(BrowserUtilities.driver);
    action.moveToElement(element).build().perform();

        }

答案 3 :(得分:0)

当你第二次使用Mouse Hover班级中的ClickAndHold()时尝试Actions,如下所示:

Actions action = new Actions(Driver);
action.MoveToElement(webelement).ClickAndHold().Perform();

clickAndHold() 方法基本上是 Clicks (without releasing) at the current mouse location. 。所以它可能对我们没有帮助。但只需 Mouse Hover ,您就不需要Click and Hold。我们只需 MoveToElement 并调用 Perform() 即可实现以下相同目标:

new Actions(Driver).MoveToElement(webelement).Perform();

答案 4 :(得分:0)

此代码在 python 中,您可以在您的语言中使用相同的功能 #第一次正常使用

actions = ActionChains(self.driver)
actions.move_to_element(admin_tab).perform()

#第二次在使用鼠标悬停之前使用重置动作

actions.reset_actions()# to reset mouse hover
actions = ActionChains(self.driver)
actions.move_to_element(admin_tab_new).perform()