Heim >Java >javaLernprogramm >Wie klicke ich auf Elemente, die durch Overlays in Selenium verborgen sind?

Wie klicke ich auf Elemente, die durch Overlays in Selenium verborgen sind?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 14:27:10215Durchsuche

How to Click Elements Hidden by Overlays in Selenium?

Anklicken von Elementen, die durch Überlagerungen in Selenium verdeckt sind

In der Selenium-basierten Automatisierung kann das Klicken auf Elemente, die durch Überlagerungen verdeckt sind, eine häufige Herausforderung sein . Die Fehlermeldung „Element MyElement ist am Punkt (x, y) nicht anklickbar... Anderes Element würde den Klick erhalten“ weist auf diese Situation hin.

Behebung des Problems

Um dieses Problem zu lösen, ziehen Sie die folgenden Ansätze in Betracht:

  • JavaScript oder AJAX Aufrufe:
    Wenn JavaScript- oder AJAX-Aufrufe den Klickfehler verursachen, versuchen Sie es mit der Actions-Klasse:
WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
  • Element nicht im Ansichtsfenster:
    Wenn das Element im Ansichtsfenster nicht sichtbar ist, verwenden Sie JavaScriptExecutor, um es hineinzubringen Ansicht:
JavascriptExecutor jse1 = (JavascriptExecutor)driver;
jse1.executeScript("scroll(250, 0)"); // if the element is on top.
jse1.executeScript("scroll(0, 250)"); // if the element is at bottom.
  • Seitenaktualisierung:
    Wenn die Seite aktualisiert wird, bevor das Element anklickbar wird, veranlassen Sie eine Wartezeit:

    Thread.sleep(500); // replace 500 with an appropriate timeout in milliseconds
  • Element im DOM nicht anklickbar:
    Wenn Das Element ist im DOM vorhanden, aber nicht anklickbar. Verwenden Sie ein ExplicitWait mit einer elementToBeClickable ExpectedCondition:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  • Temporäre Überlagerung:
    Wenn das Element vorhanden ist Um ein temporäres Overlay zu erstellen, verwenden Sie ein ExplicitWait mit einer invisibilityOfElementLocated ExpectedCondition, damit das Overlay wird unsichtbar:
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  • Permanente Überlagerung:
    Wenn das Element eine permanente Überlagerung hat, senden Sie den Klick mit JavaScriptExecutor direkt an das Element:
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);

Das obige ist der detaillierte Inhalt vonWie klicke ich auf Elemente, die durch Overlays in Selenium verborgen sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn