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
Freigeben: 2024-12-29 14:27:10
Original
224 Leute haben es durchsucht

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();
Nach dem Login kopieren
  • 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.
Nach dem Login kopieren
  • 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
    Nach dem Login kopieren
  • 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")));
Nach dem Login kopieren
  • 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")));
Nach dem Login kopieren
  • 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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage