【问题标题】:Not able to mousehover (movetoElement) using actions class无法使用操作类进行鼠标悬停(movetoElement)
【发布时间】:2017-08-18 02:57:06
【问题描述】:

AM 使用下面的代码并尝试将鼠标悬停在链接上。代码已成功执行,没有任何错误,但我在网页上看不到任何操作。

系统规格: Windows 7的; Mozilla 52.0 64 位; 硒 3.3.0

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;


public class Mouseaction {

public static void main(String[] args) {
System.setenter code hereProperty("webdriver.gecko.driver","E:\\Selenium\\geckodriver\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();

driver.get("http://www.flipkart.com");           
    System.out.println(driver.findElement(By.partialLinkText("Electronics")).isDisplayed());
Actions act = new Actions(driver);
    act.moveToElement(driver.findElement(By.partialLinkText("Electronics"))).build().perform();

}
}

【问题讨论】:

    标签: java selenium action selenium3


    【解决方案1】:

    您的定位器不工作,试试这个:

        driver.manage().window().maximize();
        driver.get("http://www.flipkart.com");           
    
        WebElement hoverOn = driver.findElement(By.xpath("//*[@id='container']/div/header/div[2]/div/ul/li[1]/a"));
        Actions act = new Actions(driver);
        act.moveToElement(hoverOn).build().perform();
    

    【讨论】:

    • 使用具有这么多嵌套级别的任何定位器都不是一个好习惯。它使它变脆。
    • 我已经尝试了上面的代码,但仍然无法正常工作。而且它也没有抛出任何错误。动作类是否在以下系统规范中工作?系统规格:Windows 7; Mozilla 52.0 64 位;硒 3.3.0
    【解决方案2】:

    我不确定您的代码为什么不起作用。我测试了下面的代码,它可以工作。

    driver.get("https://www.flipkart.com/");
    WebElement link = new WebDriverWait(driver, 3)
            .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[title='Electronics']")));
    new Actions(driver).moveToElement(link).build().perform();
    

    【讨论】:

    • 我已经尝试过您的代码,但它不适合我。
    • 我已经尝试了上面的代码,但仍然无法正常工作。而且它也没有抛出任何错误。动作类是否在以下系统规范中工作?系统规格:Windows 7; Mozilla 52.0 64 位;硒 3.3.0
    【解决方案3】:

    尝试使用 chrome 驱动

    下面是完整的工作代码:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.interactions.Actions;
    
    public class Mouseaction {
    
        public static void main(String[] args) throws InterruptedException {
            System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.manage().window().maximize();
            driver.get("http://www.flipkart.com");
            System.out.println(driver.findElement(By.xpath("//a/span[text()='Electronics']")).isDisplayed());
            Actions act = new Actions(driver);
            act.clickAndHold(driver.findElement(By.xpath("//a/span[text()='Electronics']"))).build().perform();
            Thread.sleep(12000);
    
            System.out.println(
                    "HoverOver successfull on : " + driver.findElement(By.xpath("//a/span[text()='Electronics']")));
            driver.quit();
    
        }
    }
    

    控制台输出

    true
    
    HoverOver successfull on : [[ChromeDriver: chrome on XP (1e433b044b5162e96df55c46690dd943)] -> xpath: //a/span[text()='Electronics']]
    

    【讨论】:

    • 我已经尝试了上面的代码,但仍然无法正常工作。而且它也没有抛出任何错误。动作类是否在以下系统规范中工作?系统规格:Windows 7; Mozilla 52.0 64 位;硒 3.3.0
    • 我更新了代码,请试试这个。它应该可以工作。
    • 如果您发现此(或任何)答案有帮助,请点赞。如果这回答了您的问题,请将其标记为已接受的答案。谢谢!
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多