Как сделать курсор мыши, используя Selenium WebDriver в Firefox 19? - программирование
Подтвердить что ты не робот

Как сделать курсор мыши, используя Selenium WebDriver в Firefox 19?

Я использовал селен 2.31.

Я использовал класс Actions для перемещения мыши. Используя это, я переместил мышь над меню, и его подменю появилось только на долю секунды, в отличие от старой версии firefox.

Избегайте этой проблемы. Я не могу выбрать подменю, используя driver.findElement, поскольку он выбрасывает исключение. Элемент не может быть прокручен в представление.

Есть ли какое-либо решение для этого?

4b9b3361

Ответ 1

С объектом action сначала нужно переместить заголовок меню, а затем перейдите к пункту всплывающего меню и щелкните по нему. Не забудьте вызвать actions.perform() в конце. Вот пример кода Java:

Actions actions = new Actions(driver);
WebElement menuHoverLink = driver.findElement(By.linkText("Menu heading"));
actions.moveToElement(menuHoverLink);

WebElement subLink = driver.findElement(By.cssSelector("#headerMenu .subLink"));
actions.moveToElement(subLink);
actions.click();
actions.perform();

Ответ 2

Другой способ сделать это - использовать Selenium JavaScript Executor, чтобы заставить стиль отображаемого элемента.

Пример этого будет по этим строкам в С#

//Use the Browser to change the display of the element to be shown
 (IJavaScriptExecutor)driver).ExecuteScript("document.getElementById('myId').stlye.display="block");

//navigate to your link that is now viewable 
driver.FindElement(By.Xpath('//LinkPath')).Click(); 

Оттуда вы можете найти XPath для своего элемента и использовать селен, чтобы щелкнуть элемент. Вы можете каскадировать это, чтобы найти детей вашего основного элемента, а также

//(IJavaScriptExecutor)ffbrowser).ExecuteScript("document.getElementById('myId').children[1].children[1].style.display='block'");

Обратите внимание, что это возможно только в том случае, если у вас есть элемент hover, который изменяет стиль отображения при зависании.

Ответ 3

Попробуйте этот код... Это четкий код...

//Webelement is the main menu Link
webElement = driver.FindElement(By.XPath("Your element xpath"));
Actions act = new Actions(driver);
        act.MoveToElement(webElement).Perform();//This opens menu list

        System.Threading.Thread.Sleep(5000);//This line will help you to hold menu 
 //This web element is the sub menu which is under main menu
        webElement = driver.FindElement(By.XPath("Sub menu path"));
        act.MoveToElement(webElement).Perform();//This opens menu list
        System.Threading.Thread.Sleep(5000);//Holds menu
    //This web element is the option you have to click
        webElement = driver.FindElement(By.XPath("Path"));
        webElement.Click();

Ответ 4

Это будет полезно, если вы используете Ruby.

1. Сначала вам нужно найти элемент по xpath или id.

2. Затем используйте метод action.move_to(). выполните.

Вот код:

    hover = WAIT.until{$driver.find_element(:xpath,"xpath")}
    driver.action.move_to(hover).perform

Ответ 5

Этот ответ помог решить мою проблему.

Мой вызов заключался в том, чтобы найти ссылку в меню. Ссылка не была видна, пока я не завис над меню.

Эта важная часть для меня заключалась в том, что в дополнение к зависанию над меню я должен был навести курсор на ссылку, чтобы взаимодействовать с ней.

Ответ 6

List<WebElement> list = driver.findElements(By.xpath("//a"));
        for (int i=0;i<list.size();i++){
        if(list.get(i).getText().equalsIgnoreCase("cacique intimates M"))
            {
    new Actions(driver).moveToElement(list.get(i)).click().build().perform();
    System.out.println("Clicked on Parent Category");
    new Actions(driver).moveToElement(list.get(i)).moveToElement(driver.findElement(By.linkText("SPECIALTY BRAS"))).click().build().perform();
        break;
    }                           
    }