Quero fazer a função de mouseover em um menu suspenso. Quando passamos o mouse sobre o menu, ele mostra as novas opções. Tentei clicar nas novas opções usando o xpath. Mas não pode clicar nos menus diretamente. Então, como manual, estou tentando passar o mouse sobre o menu suspenso e clicar nas novas opções.
Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();
java
selenium
selenium-webdriver
mouseover
Pradeep SJ
fonte
fonte
Respostas:
Não é realmente possível executar uma ação de "passar o mouse"; você precisa encadear todas as ações que deseja realizar de uma só vez. Então, vá para o elemento que revela os outros e, durante a mesma cadeia, vá para o elemento agora revelado e clique nele.
Ao usar as Cadeias de ação, você deve se lembrar de 'fazê-lo como um usuário faria'.
fonte
webdriver.findElement(By... something)
são executadas antes de qualquer outra coisa (é a única maneira pela qual seus resultados podem ser transmitidosmoveElement
). Naquele momento, o segundo elemento que você deseja encontrar ainda não está visível porque o primeiro ainda precisa passar o mouse. Para consertar isso, como você disse, você pode inserir.perform()
s intermediários . Então, pelo segundofindElement
, a primeira focalização seráperform
editada. A solução fornecida pode funcionar, dependendo da implementação da página, mas aparentemente sua e minha milhagem variaram.Nenhuma dessas respostas funciona ao tentar fazer o seguinte:
Se você inserir um comando 'perform' após o moveToElement, ele será movido para o elemento e o item do submenu será exibido por um breve período, mas isso não é um foco. O elemento oculto desaparece imediatamente antes de ser encontrado, resultando em uma ElementNotFoundException. Eu tentei duas coisas:
Isto não funcionou para mim. O seguinte funcionou para mim:
Usando as ações para pairar e o clique padrão do WebDriver, eu poderia passar o mouse e clicar.
fonte
Com base nesta postagem do blog, fui capaz de acionar o pairar usando o seguinte código com o Selenium 2 Webdriver:
fonte
moveToElement
, use este! Eu codifico em C #, portanto, não é apenas a maneira Java de fazer isso.Example
arguments[0]
?executeScript()
, que é um #webElement
Este código funciona perfeitamente bem:
Depois de passar o mouse, você poderá executar a próxima ação desejada nas informações reveladas
fonte
using OpenQA.Selenium.Interactions;
Veja neste exemplo como podemos implementar isso.
Para obter respostas detalhadas, consulte aqui - http://www.testautomationguru.com/selenium-webdriver-automating-hoverable-multilevel-dropdowns/
fonte
Encontrei essa pergunta procurando uma maneira de fazer a mesma coisa nos meus testes de Javascript, usando o Transferidor (uma interface de javascript do Selenium.)
Minha solução com o transferidor 1.2.0 e o webdriver 2.1:
Isso também aceita um deslocamento (estou usando-o para clicar acima e à esquerda de um elemento :)
fonte
Exemplo de programa para passar o mouse usando o Selenium java WebDriver:
fonte
Podes tentar:
Se você teve muitas categorias na Web, use o primeiro método. Para o menu desejado, você só precisa do segundo método.
fonte