无法点击网页元素按钮

时间:2019-06-18 21:30:47

标签: java selenium selenium-webdriver selenium-chromedriver

无法单击webelement按钮

我试图通过鼠标移动来单击按钮,但没有成功

我的外部html如下:

<button class="btn btn-alt btn-small" type="button" ng-click="ecdapp.uploadBlueprintModalPopup();"> 
    Create
</button>

xpath的按钮是:

//*[@id="page-content"]/div[3]/button

4 个答案:

答案 0 :(得分:1)

看不到完整的页面源代码,很难判断XPath表达式的优劣,您可以尝试使用按钮text来定位按钮

//button[normalize-space(text())='Create']

enter image description here

normalize-space()函数用于丢弃标题/尾随空白

也可能是按钮无法立即使用的情况,我建议考虑通过Explicit Wait类使用WebDriverWait方法

WebElement myButton = new WebDriverWait(driver, 10)
        .until(ExpectedConditions
                .elementToBeClickable(By.xpath("//button[normalize-space(text())='Create']")));
myButton.click();

上面的代码将尝试定位上述按钮10秒钟,并在该按钮出现/可见/可单击时立即单击它。否则它将失败,并显示NoSuchElementException

答案 1 :(得分:0)

可能是Xpath错误。试试下面的xpath:

// button [包含(text(),'Create')]

答案 2 :(得分:0)

正如您在屏幕截图中看到的那样,该Xpath 100%可以工作,如果仍然无法单击该按钮,则问题不在于xpath。让我知道它是否仍然失败。

 By.xpath("//button[@class = 'btn btn-alt btn-small' and @type = 'button']")

enter image description here

根据您的评论:

我尝试了此代码,但无法单击。元素点击被拦截:元素...在点(293,97)不可点击。其他元素将获得点击:...(会话信息:chrome = 74.0.3729.169)

在您单击此元素之前,我很确定我知道您的问题是什么,页面上会出现以下情况: 它说-其他元素将获得点击,表示按钮上方(重叠)有其他元素(弹出窗口,页面变灰(加载时禁用,某些JS运行)),因此当硒试图单击您的按钮,实际上是单击该阻止元素。 尝试单击Thread.Sleep();之后;等待5-10秒。 如果是这种情况,那么您需要在找到按钮之前添加条件,以检查阻止单击按钮的元素是否消失,然后单击它。

答案 3 :(得分:0)

试试下面的 JavaScript 执行器,

WebElement element = driver.findElement(By.xpath("<xpath of button>"));
JavascriptExecutor js= (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);