簡體   English   中英

元素不可點擊(Selenium Webdriver - JAVA)

[英]Element not click-able (Selenium Webdriver - JAVA)

所有,

我已經使用 Selenium webdriver 一段時間了,但遇到了一個奇怪的問題。 我需要單擊 selenium webdriver 沒有執行的元素,因此我接下來的所有步驟都失敗了。 元素的html如下。

<div id="group-container" class="grp-view-container">

<div id="group-container-0" class="component-inline-block" '="" data-original-title="" title="">

<div id="group-container-1" class="component-inline-block" '="" data-original-title="" title="">

</div>

我需要點擊 group-container-1。 我使用了簡單的點擊、Actions、JavascriptExecutor、SendKeys(keys.RETURN)。

我使用了 Chromedriver、FirefoxDriver。

請指導我。

謝謝。

經過一些谷歌搜索和本地測試,我得出的結論是,如果和元素確實隱藏在另一個元素后面,則來自 selenium 的正常 element.click() 調用將不起作用。

在您的情況下,您可能有一些 css 將 you 元素隱藏在其他元素后面,從而使 Selenium 無法訪問它。

在這種情況下,您應該使用普通的舊 JS。

這是 FireFoxDriver 的示例:

FirefoxDriver driver = new FirefoxDriver();
driver.get("ENTER YOU URL HERE");
// driver.findElement(By.id("group-container-1")).click(); This will work only if the element is not hidden.

String jsExpression = "document.getElementById('group-container-1').click();";
((JavascriptExecutor) driver).executeScript(jsExpression);

要查看任何結果,您必須在單擊的元素上具有 onClick 偵聽器。

當您擁有使用 z-index 的 CSS 時,經常會出現這種情況。 另一個 HTML 元素的透明部分可能覆蓋了您感興趣的 HTML 元素。

有時使用絕對定位時可能會出現同樣的情況。

過去我在編寫腳本來測試搜索字段時遇到過同樣的問題。 該腳本適用於頁眉,但不適用於頁腳。 我還可以通過鍵輸入( sendKeys )來測試該字段,而不是鼠標單擊。

我收到此錯誤:

org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element <input type="submit" class="submit hidden-text" value="Search"> is not clickable at point (988, 633). Other element would receive the click: <i class="fas fa-arrow-circle-up"></i>

我的 ScreenShotOnFailure.java 實用程序顯示了這個問題: 返回頂部按鈕遮擋搜索圖標

使用頁面“返回頂部”的按鈕部分遮擋了我想要單擊的搜索圖標。 我最初試圖通過指定窗口大小( driver.manage().window().setSize(new Dimension(1024, 768)); )來解決這個問題,因為我認為它由於瀏覽器尺寸而被遮擋,但事實並非如此沒有幫助。 所以我切換到JS點擊按鈕。

我改變了:

driver.findElement(By.xpath("(//input[@value='Search'])[2]")).click();

到:

org.openqa.selenium.WebElement ele = driver.findElement(By.xpath("(//input[@value='Search'])[2]"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", ele);

(和進口相關進口)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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