[英]Unable to click on webelement button
無法點擊 webelement 按鈕
我試圖通過鼠標移動點擊按鈕但沒有成功
我的外部 html 如下:
<button class="btn btn-alt btn-small" type="button" ng-click="ecdapp.uploadBlueprintModalPopup();">
Create
</button>
按鈕 xpath 是:
//*[@id="page-content"]/div[3]/button
沒有看到完整的頁面源代碼,很難分辨XPath表達式的優劣,您可以嘗試使用其文本查找按鈕
//button[normalize-space(text())='Create']
normalize-space()
函數用於丟棄標題/尾隨空白
也可能是按鈕無法立即使用的情況,我建議您考慮通過WebDriverWait類使用Explicit Wait方法
WebElement myButton = new WebDriverWait(driver, 10)
.until(ExpectedConditions
.elementToBeClickable(By.xpath("//button[normalize-space(text())='Create']")));
myButton.click();
上面的代碼將嘗試定位上述按鈕10秒鍾,並在該按鈕出現/可見/可點擊時立即單擊它。 否則它將失敗,並顯示NoSuchElementException
可能是Xpath錯誤。 試試下面的xpath:
//按鈕[含有(文本(), '創建')]
從屏幕截圖中可以看到,該Xpath 100%可以工作,如果仍然無法單擊該按鈕,則問題不在於xpath。 讓我知道它是否仍然失敗。
By.xpath("//button[@class = 'btn btn-alt btn-small' and @type = 'button']")
根據您的評論:
我嘗試了此代碼,但無法單擊。 元素點擊被攔截:元素...在點(293,97)不可點擊。 其他元素將獲得點擊:...(會話信息:chrome = 74.0.3729.169)
我很確定我知道您的問題,在您單擊該元素之前,頁面上會出現以下內容:它說- 其他元素將獲得click ,這意味着按鈕上方有其他元素(重疊)(彈出窗口,頁面是變灰(加載時禁用,某些JS運行),因此,當Selenium嘗試單擊您的按鈕時,實際上單擊了該阻塞元素。 嘗試單擊Thread.Sleep();之后; 等待5-10秒。 如果是這種情況,那么您需要在找到按鈕之前添加條件,以檢查阻止單擊按鈕的元素是否消失,然后單擊它。
試試下面的 JavaScript 執行器,
WebElement element = driver.findElement(By.xpath("<xpath of button>"));
JavascriptExecutor js= (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.