2017-02-09 1 views
0

Может ли кто-нибудь помочь показать, почему это не работает?moveToElement() для выполнения действия наведения

Страница объекта:

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); 
     }  
} 

Тест:

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(); 
      } 
    } 

nav.hover_Product_Category() просто ничего не делает, даже не ошибка. Когда я использую .click() вместо .moveToElement(), элемент кликается, и отображается выпадающее меню, которое я хочу, поэтому селектор верен.

ответ

1

Вы должны вызвать perform() на Actions методы класса

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

Я включил '.Произвести()' и теперь испытание бросает исключение 'org.openqa.selenium.UnsupportedCommandException: POST/сессия/d33e2dc4-2b3b-4f1b-a22d-20673c2445b7/MoveTo не соответствует известной command' –

+0

@GabrielAbel Где происходит исключение? на 'action.moveToElement (product_Category) .perform();'? – Guy

+0

Точно @Guy. Когда я включаю '.perform()'. Когда это было только «action.moveToElement (product_Category)», это исключение не произошло. –

0

.moveToElement() не работает должным образом в FirefoxDriver. Решение заключается в изменении тестов на ChromeDriver. .moveToElement() может быть заменен на .click() в некоторых сценариях, если требуется тестирование Firefox.

 Смежные вопросы

  • Нет связанных вопросов^_^