【问题标题】:Need unique field to identify using Selenium WebDriver需要使用 Selenium WebDriver 识别的唯一字段
【发布时间】:2014-05-13 18:35:09
【问题描述】:

我需要找到唯一的字段来识别搜索框并在其中输入文本。

   <style type="text/css">
</head>
<body style="min-height: 81px;">
<div class="shared-page" data-cid="view221" data-view="views/shared/Page" data-render-time="0.02">
<a class="navSkip" tabindex="1" href="#navSkip">Screen reader users, click here to skip the navigation bar</a>
<header role="banner">
<a id="navSkip"></a>
<div class="main-section-body" role="main">
<div class="timeline" data-cid="view4947" data-view="views/timeline/Master" data-render-time="0.107">
<div class="section-padded section-header">
<div class="timeline-title" data-cid="view5085" data-view="views/timeline/Title" data-render-time="0.001">
<div class="search-bar-wrapper shared-searchbar" data-cid="view4948" data-view="views/shared/searchbar/Master" data-render-time="0.104">
<form class="search-form" action="" method="get">
<table class="search-bar search-bar-primary">
<tbody>
<tr>
<td class="search-input" width="100%">
<div id="search" class="shared-searchbar-input" data-cid="view4949" data-view="views/shared/searchbar/Input" data-render-time="0.002">
<div class="search-field-background"> </div>
<div class="search-field-wrapper">
<label class="placeholder-text" for="397271.5897375417" style="display: block;">enter search here...</label>
<textarea id="397271.5897375417" class="search-field" autocapitalize="off" autocorrect="off" spellcheck="false" name="q" rows="1"></textarea>

textarea 是与搜索框相关的字段。我尝试使用类,名称,但它说无法找到元素,数字 id 也是动态的。请让我知道在这种情况下使用什么。

【问题讨论】:

  • 是粗体字吗?请更正您的问题。
  • 把你用class识别的代码放上去。
  • 该页面上是否存在多个相似的文本区域?
  • 已经更新了整个代码@Nadun
  • 如果以下答案对您没有帮助,可以发布指向显示此内容的实时页面的链接吗?

标签: selenium selenium-webdriver


【解决方案1】:

应该可以通过类名找到这个元素

在红宝石中: driver.find_element(:class, "search-field")

或者在java中: driver.findElement(By.className("search-field"));

【讨论】:

  • 同样的概率 - 无法定位元素“search-field”
【解决方案2】:

遵循 xpath 应该可以工作:

//div[@id='search']//textarea[@class='search-field']

【讨论】:

  • 同样的问题。它说“org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//textarea[@class='search-field']"} "
  • 你用过By.xpath("//div[@id='search']//textarea[@class='search-field']")吗?正如错误消息所说,By.xpath("//textarea[@class='search-field']") 似乎已被使用。
  • org.openqa.selenium.NoSuchElementException: 无法定位元素:{"method":"xpath","selector":"//div[@id='search']//textarea[ @class='搜索字段']"} @mfsi
  • 你能打印这个:System.out.println(driver.findElements(By.xpath("//div[@id='search']//textarea[@class='search-field‌​']")).size()) 并将输出粘贴到这里吗?
  • 我试过这个......它不会在控制台中打印任何东西
【解决方案3】:

如果&lt;textarea&gt;只有一个,可以用

搜索
driver.findElement(By.tagName("textarea"));

【讨论】:

  • org.openqa.selenium.NoSuchElementException: 无法定位元素:{"method":"tag name","selector":"textarea"}
  • 这是在任何框架下吗? &lt;iframe&gt;
  • 我不这么认为。用整个主体更新了代码
  • 可以提供网址吗?如果可能的话
【解决方案4】:

使用 xpath,

driver.findElement(By.xpath("//textarea[@class='search-field']"));

或者

driver.findElement(By.name("q"));

【讨论】:

  • org.openqa.selenium.NoSuchElementException: 无法定位元素:{"method":"xpath","selector":"//textarea[@class='search-field']"}
  • 添加显式等待并尝试。很可能元素没有在页面加载时加载。
  • 我添加了这个睡眠“Thread.sleep(1000);”。还是一样。 @纳顿
猜你喜欢
  • 2021-08-28
  • 2015-05-17
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 2017-05-30
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多