我有两个XPath,但只有一个有效:
此工作方式:By.XPath("//*[@id=\"app\"]/div[2]/div/div/div/div[1]/div[2]/div[2]/form/input");
不工作的:By.XPath("//*[@id=\"input-search\"]");
还试探着: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>
我试图选择我的搜索字段,这样我就可以设置selenium在我的网页上进行搜索。但是当我尝试使用id时,我得到这个错误:
异常错误:元素不可交互
我不知道为什么我不能让Id工作,当完整的XPath工作正常。希望有人能告诉我:)
1条答案
按热度按时间7uhlpewt1#
根据共享的HTML,
By.XPath("//*[@id="app"]/div[2]/div/div/div/div[1]/div[2]/div[2]/form/input");
和By.XPath("//*[@id="input-search"]");
都应该工作。如果
OpenQA.Selenium.ElementNotInteractableException : element not interactable
出现在同一行,即用第二个XPath更改第一个XPath,则意味着第一个XPath在整个页面上是唯一的,而第二个XPath不是唯一的,因此它匹配不止一个元素,而第一个匹配的元素不是您想要访问的元素,并且该元素不可交互,可能是隐藏的。