如何访问输入id或占位符,任何可以让我进入搜索框的东西 - 在多个div下,selenium java

问题描述 投票:0回答:1

HTML

<div class="mob-search-box hidden-desk without-sticky">
    <form class="form minisearch" id="wizzySearchForm-Mobile" action="/pages/search" method="get" data-gtm-form-interact-id="0">
        <div class="wizzy-custom-search-form-wrapper mf-initial wizzy-custom-search-bar">
            <div class="wizzy-search-form-mobile-wrapper mf-initial"></div>
            <div class="wizzy-search-form mf-initial">
                <label for="search" style="display: none;"></label>
                <input id="wizzy-search-mobile-input-2" type="search" name="q" placeholder="Search for " class="input-text search-query" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off" style="display: inline-block;" autofocus="" data-gtm-form-interact-field-id="0">
            </div>
        </div>
    </form>

我已经尝试执行以下行

WebElement searchbox = driver.findElement(By.xpath("//div[@class='mob-search-box hidden-desk without-sticky']//div[@class='wizzy-custom-search-form-wrapper mf-initial wizzy-custom-search-bar']//div[@class='wizzy-search-form mf-initial']//input[@id='wizzy-search-mobile-input-2']"));
java selenium-webdriver
1个回答
0
投票

您正在搜索的INPUT有一个ID。您应该始终使用它。

WebElement searchbox = driver.findElement(By.id("wizzy-search-mobile-input-2"));

如果这不起作用,您需要检查一些事项:

  1. 使用开发控制台查看页面上的 ID 是否唯一。按F12打开控制台并输入
    $$("#wizzy-search-mobile-input-2")
    。它返回的元素是否超过 1 个?
  2. 确保元素可见。您可能看到了错误的输入。硒不能与不可见的元素相互作用。用户如何使该元素变得可见?按照脚本中的这些步骤操作,然后您就可以与其交互。
  3. 确保该元素不在 IFRAME 中。如果是,您需要切换到 IFRAME 上下文才能访问 INPUT。
© www.soinside.com 2019 - 2024. All rights reserved.