2017-08-28 2 views
-1

Je suis confronté à un moment difficile en cliquant sur un bouton de Selenium.Impossible de cliquer sur un bouton dans Selenium

Voici le DOM: http://pasteboard.co/GHIjMd6.png

J'ai déclaré le bouton WebElement cette façon en utilisant XPath (un XPath valide qui retourne un nœud selon Firepath):

WebElement send_this_msg_btn = driver.findElement(By.xpath("//*[@class='mp-button-content'][.='Send This Message']")); 

J'ai essayé de cliquer sur le ledit bouton avec send_this_msg_btn Xpath dans les manières mentionnées ci-dessous, mais aucun d'eux ne fonctionne pour moi.

méthode WebDriver click(): send_this_msg_btn.click()

JavaScriptExecutor:

JavaScriptExecutor jse = (JavaScriptExecutor)driver; 
jse.executeScript("arguments[0].click();", send_this_msg_btn); 

Classe Actions:

Actions actions = new Actions(driver); 
actions.moveToElement(send_this_msg_btn); 
actions.click(); 
actions.build().perform(); 

J'ai aussi vérifié si le bouton est dans un cadre/iframe, mais ce n'est pas le cas non plus.

+0

Quelle est l'erreur que vous obtenez? – Kapil

+0

@Kapil Veuillez vérifier ce lien: https://pasteboard.co/GHIjMd6.png –

+0

Je reçois NoSuchElementException dans tous les cas. –

Répondre

0

Modification du XPath pour .//mp-button[@class='mp-button-primary submit_button'] résoudre le problème, mais je ne sais pas si cela devrait être la réponse acceptée car je ne suis pas sûr que ce soit un XPath fragile. Toutes les suggestions sont les bienvenues!

-1

Essayez de cliquer sur le bouton parent

xpath = "//*[@class='mp-button-content'][.='Send This Message']/.." 

ou il est parent

xpath = "//*[@class='mp-button-content'][.='Send This Message']/../.." 

et utiliser l'attente explicite jusqu'à ce que l'élément est cliquable.

WebDriverWait wait = new WebDriverWait(driver, 30); 
WebElement elem = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(xpath))); 
elem.click(); 
+0

Aucun de ces travaux. J'obtiens 'NoSuchElementException' dans les deux cas. –

+0

alors vous devez utiliser l'attente explicite avec les deux xpath que j'ai suggéré. mettez également à jour votre question avec exception/erreur que vous obtenez. Si vous n'obtenez aucune erreur, mentionnez-le également. –

+0

J'ai essayé d'utiliser l'attente explicite aussi avec les xpaths que vous avez mentionnés, j'obtiens ceci: "org.openqa.selenium.TimeoutException: la condition prévue a échoué: attendre que l'élément soit cliquable". –