Problem
Ich habe 2 XPath, aber nur 1 funktioniert:
Das funktioniert:
By.XPath("//*[@id=\"app\"]/div[2]/div/div/div/div[1]/div[2]/div[2]/form/input");
Funktioniert nicht:
By.XPath("//*[@id=\"input-search\"]");
Auch probiert:
By.Id("input-search");
HTML
<div id="app">
<div class="hidden-not-printing" b-0rz2d3qv9n=""></div>
<div class="hidden-printing" b-0rz2d3qv9n="">
<div class="main-layout" b-d47k65u4lc="">
<nav class="nav-menu__container nav-close-mobile" id="app-nav-menu" b-cpvcfm2reo="">
</nav><div class="page">
<nav class="page-header" b-9p487gxfqe="">
</nav><div class="page-content">
<aside class="left-side-content aside-panel-flex" b-6cu9cqksy9="">
</aside>
<div class="primary-content ">
<div class="page-content__navigation hidden-desktop"><div><i class="uil uil-angle-right-b"></i>Alle ressourcer</div></div>
<div class="page-header-actions__container" b-2n7grz7ttq="">
<div class="flex-fit-content" b-2n7grz7ttq="">
</div>
<button type="button" class="btn btn-light btn-sm searchbutton hidden-desktop" role="button" _bl_20="">
</button>
<div class="searchbar searchbar-visible" b-nz34ntt3ce="">
<button type="button" class="btn btn-light btn-sm searchbutton hidden-mobile hidden-tablet" role="button" _bl_21="">
</button>
<form b-nz34ntt3ce="">
<input id="input-search" class="regular-13" type="search" placeholder="Søg..." b-nz34ntt3ce="" _bl_19="">
</form>
<button type="button" class="btn btn-light btn-sm closebutton" role="button" _bl_22="">
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Ich versuche, mein Suchfeld auszuwählen, damit ich Selenium einrichten kann, um eine Suche auf meiner Webseite durchzuführen. Aber wenn ich versuche, die ID zu verwenden, erhalte ich diesen Fehler:
OpenQA.Selenium.ElementNotInteractableException : Element nicht interaktiv
Ich weiß nicht, warum ich die ID nicht zum Laufen bringen kann, wenn der vollständige XPath einwandfrei funktioniert. Hoffe das mir jemand sagen kann 🙂
Lösung
Laut dem freigegebenen HTML sollten sowohl By.XPath("//*[@id="app"]/div[2]/div/div/div/div[1]/div[2]/div[2]/form/input");
als auch By.XPath("//*[@id="input-search"]");
funktionieren.
Falls der Fall OpenQA.Selenium.ElementNotInteractableException : element not interactable
für dieselbe Zeile erscheint, dh für das Ändern des ersten XPath mit dem zweiten, bedeutet dies, dass der erste XPath auf der gesamten Seite eindeutig ist, während der zweite XPath nicht eindeutig ist, sodass er mit mehr als 1 Element übereinstimmt, während das erste übereinstimmende Element dies nicht ist worauf Sie zugreifen möchten, und dieses Element ist nicht interaktiv, wahrscheinlich versteckt.
Beantwortet von – Prophet
Antwort geprüft von – Candace Johnson (FixError Volunteer)