我在点击Selenium的按钮时遇到了困难。
这是DOM:http://pasteboard.co/GHIjMd6.png
我已经使用Xpath(一个根据Firepath返回一个节点的有效Xpath)以这种方式声明了按钮WebElement:
WebElement send_this_msg_btn = driver.findElement(By.xpath("//*[@class='mp-button-content'][.='Send This Message']"));
我尝试用下面提到的send_this_msg_btn
Xpath单击所述按钮,但它们都不适用于我。
WebDriver的click()
方法:send_this_msg_btn.click()
JavaScriptExecutor:
JavaScriptExecutor jse = (JavaScriptExecutor)driver;
jse.executeScript("arguments[0].click();", send_this_msg_btn);
动作类:
Actions actions = new Actions(driver);
actions.moveToElement(send_this_msg_btn);
actions.click();
actions.build().perform();
我还检查了按钮是否在框架/ iframe中,但情况也不是这样。
答案 0 :(得分:0)
将xpath更改为.//mp-button[@class='mp-button-primary submit_button']
解决了问题,但我不确定这是否应该是接受的答案,因为我不确定它是否是一个脆弱的xpath。欢迎任何建议!
答案 1 :(得分:-1)
尝试点击父按钮
xpath = "//*[@class='mp-button-content'][.='Send This Message']/.."
或它的父母
xpath = "//*[@class='mp-button-content'][.='Send This Message']/../.."
并使用显式等待直到元素可单击。
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement elem = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(xpath)));
elem.click();