2017-02-09 2 views
0

Kann jemand helfen zu zeigen, warum das nicht funktioniert?moveToElement() zum Ausführen einer Hover-Aktion

Seite Objekt:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.interactions.Actions; 
import org.openqa.selenium.support.CacheLookup; 
import org.openqa.selenium.support.FindBy; 
import org.openqa.selenium.support.How; 
import org.openqa.selenium.support.PageFactory; 

    public class NavBarPO { 

    WebDriver driver; 
    Actions action; 

    public NavBarPO(WebDriver driver){ 
     this.driver = driver; 
     PageFactory.initElements(driver, this); 
     action = new Actions(driver); 
    } 
     @CacheLookup 
     @FindBy(how = How.CSS, using = "li.menu-item.menu-item-type-taxonomy.menu-item-object-wpsc_product_category.menu-item-has-children.has_children > a") 
     private WebElement product_Category;  

     public void hover_Product_Category(){ 
      action.moveToElement(product_Category); 
     }  
} 

Test:

public class OpenDemos { 

     @BeforeTest 
     public void Initialize() { 
      System.setProperty("webdriver.chrome.driver", "C:/Users/u6028938/Documents/Selenium Java/chromedriver.exe"); 
      System.setProperty("webdriver.gecko.driver", "C:/Users/u6028938/Documents/Selenium Java/geckodriver.exe"); 
     } 

     @Test 
      public void SecondTest() throws InterruptedException { 
       WebDriver driver = new FirefoxDriver(); 
       NavBarPO nav = new NavBarPO(driver); 
       driver.get("http://www.store.demoqa.com"); 
       Thread.sleep(3000); 
       nav.Hover_Product_Category(); 
       System.out.println("Successfully Executed Test!"); 
       Thread.sleep(10000); 
       driver.quit(); 
      } 
    } 

Die nav.hover_Product_Category() einfach tut nichts, nicht einmal einen Fehler. Wenn ich .click() anstelle von .moveToElement() verwende, wird das Element angeklickt und das Dropdown, das ich will, wird angezeigt, so dass der Selektor korrekt ist.

Antwort

1

Sie benötigen .moveToElement()

public void hover_Product_Category(){ 
    action.moveToElement(product_Category).perform(); 
} 
+0

I enthalten '.perform()' und jetzt der Test wirft die Ausnahme 'org.openqa.selenium.UnsupportedCommandException: POST/session/d33e2dc4-2b3b-4f1b-a22d-20673c2445b7/moveto –

+0

hat keinen bekannten command' entsprechen @GabrielAbel Wo tritt die Ausnahme auf? auf 'action.moveToElement (product_Category) .perform();'? – Guy

+0

Genau @Guy. Wenn ich '.perform()' einschließe. Wenn es nur "action.moveToElement (product_Category)" war, ist diese Ausnahme nicht aufgetreten. –

0

perform() auf Actions Klasse Methoden aufrufen nicht richtig in FirefoxDriver funktioniert. Die Lösung ist, die Tests auf ChromeDriver zu ändern. .moveToElement() kann in einigen Szenarien mit .click() raplaced werden, wenn das Testen von Firefox erforderlich ist.

Verwandte Themen