wake-up-neo.net

So lösen Sie ElementNotInteractableException: Element ist im Selenium-Web-Treiber nicht sichtbar

Hier habe ich das Bild meines Codes und das Bild meines Fehlers. Kann mir jemand helfen, dieses Problem zu lösen?

 enter image description here

 enter image description here

4
Aarthi

ElementNotInteractableException

ElementNotInteractableException ist die W3C-Ausnahme, die ausgelöst wird, um anzuzeigen, dass ein Element zwar im HTML-DOM vorhanden ist, sich jedoch nicht in einem Zustand befindet, mit dem interagiert werden kann.

Gründe und Lösungen:

Der Grund für das Auftreten von ElementNotInteractableException kann zahlreich sein.

  1. Temporäre Überlagerung anderer WebElement über die WebElement unseres Interesses:

    In diesem Fall wäre die direkte Lösung gewesen, ExplicitWait, d. H. WebDriverWait in Kombination mit ExpectedCondition als invisibilityOfElementLocated wie folgt zu induzieren:

    WebDriverWait wait2 = new WebDriverWait(driver, 10);
    wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_element_to_be_invisible")));
    driver.findElement(By.xpath("xpath_element_to_be_clicked")).click();
    

    Eine bessere Lösung wird sein, ein bisschen mehr Granularität zu erhalten. Anstelle von ExpectedCondition als invisibilityOfElementLocated können wir ExpectedCondition als elementToBeClickable wie folgt verwenden:

    WebDriverWait wait1 = new WebDriverWait(driver, 10);
    WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked")));
    element1.click();
    
  2. Permanente Überlagerung anderer WebElement über die WebElement unseres Interesses:

    Wenn das Overlay in diesem Fall dauerhaft ist, müssen wir die Instanz WebDriver in JavascriptExecutor umwandeln und den Klickvorgang wie folgt ausführen:

    WebElement ele = driver.findElement(By.xpath("element_xpath"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", ele);
    
19
DebanjanB

Eigentlich ist die Ausnahme Element Not Visible

Es empfiehlt sich, den Benutzer Implicit wait unter dem Treiber Instantiation zu verwenden, um ausreichend Zeitelement vor der Ausnahme zu erhalten

driver.get("http://www.testsite.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

Immer noch mit einem Problem konfrontiert, da ein Element mehr Zeit benötigt, um den Benutzer ExplicitWait für ein einzelnes Element zu verwenden, um bestimmte Bedingungen zu erfüllen

In Ihrem Fall sehen Sie das Element not visible exception und verwenden Sie die wait-Bedingung auf folgende Weise

WebDriverWait wait = new WebDriverWait(driver, 120);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.your_Elemetnt));
0
NarendraR