簡體   English   中英

無法點擊 webelement 按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM