无法单击webelement按钮
我试图通过鼠标移动来单击按钮,但没有成功
我的外部html如下:
<button class="btn btn-alt btn-small" type="button" ng-click="ecdapp.uploadBlueprintModalPopup();">
Create
</button>
xpath的按钮是:
//*[@id="page-content"]/div[3]/button
答案 0 :(得分:1)
看不到完整的页面源代码,很难判断XPath表达式的优劣,您可以尝试使用按钮text来定位按钮
//button[normalize-space(text())='Create']
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']")
根据您的评论:
我尝试了此代码,但无法单击。元素点击被拦截:元素...在点(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);