【问题标题】:I need help finding a web element in selenium Java我需要帮助在 selenium Java 中查找 Web 元素
【发布时间】:2014-04-22 18:49:23
【问题描述】:

这是 HTML:

<input id="ember354" class="ember-view ember-text-field search" placeholder="Ask me anything!" type="text">

从 body-div-div-input 到达的地方

  • 由于输入标签超过 1 个,我无法按标签找到元素
  • 我无法通过 id 找到元素,因为它是动态的
  • 由于复合类名,我无法按类查找元素
  • 我尝试了许多不同的 CSS 选择器,但都没有成功
  • 我尝试了许多不同的 XPATH 行,但都没有成功

此代码的不同变体将 * 替换为 input 并使用 contains & starts-with 函数没有用:

WebElement ele = driver.findElement(By.xpath("//*[@class='ember-view ember-text-field search']"));

使用了像这样的不同 CSS 选择器,包括包含,其他功能也没有成功

WebElement ele = driver.findElement(By.cssSelector("ember-view.ember-text-field.search"));

我想也许按占位符搜索,因为那是静态的,但我不知道该怎么做。

【问题讨论】:

  • 这两个查询都应该有效。返回的方法是什么?
  • 线程“主”org.openqa.selenium.NoSuchElementException 中的异常:没有这样的元素
  • 页面是否动态创建该元素?
  • 这个元素是否在 iframe 中。
  • 不,完整路径实际上是 //body/div/div/input

标签: java html css selenium xpath


【解决方案1】:

您可以尝试通过占位符查找元素

driver.findElement(By.xpath("//input[@placeholder='Ask me anything!']"))

【讨论】:

    【解决方案2】:

    您在使用 css 选择器时犯了错误。 我认为您在使用 css 选择器时忘记将 . 放在类名前面。

    正确的 css 定位器是 .ember-view.ember-text-field.search

    所以你的最终代码看起来像:

    String cssLocator = ".ember-view.ember-text-field.search";
    WebElement ele= driver.findElement(By.cssSelector(cssLocator));
    

    或者如果你想让它更具体,那么你可以使用:

    String cssLocator = ".ember-view[placeholder='Ask me anything!']";

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2013-08-19
      相关资源
      最近更新 更多