如何使用xpath从占位符获取值

时间:2013-12-20 05:46:36

标签: xpath selenium-webdriver

所有元素都是动态的。我只能看到以下html中唯一的占位符: -

<input 
   id="ext-gen1617" 
   type="text" 
   size="20" 
   class="x-form-field x-form-text x-form-focus" 
   autocomplete="off" 
   aria-invalid="false" 
   placeholder="Gender" 
   data-errorqtip="" 
   role="textbox" 
   aria-describedby="combobox-1166-errorEl" 
   aria-required="true" 
   style="width: 78px;"
/>

我需要获取

中显示的值
placeholder="Gender". 

我尝试使用

//input[@placeholder='Gender']

但是我的webdriver脚本无法识别它。

任何人都可以帮我解决一下这个问题吗?

3 个答案:

答案 0 :(得分:7)

String s=driver.findElement(By.xpath("//input[@placeholder='Gender']")).getAttribute("placeholder"); 
System.out.println(s);

要获取字段的属性,可以使用.getAttribute()方法。

答案 1 :(得分:0)

我假设您正在处理(前端)脚本生成的Web元素,那么您必须采用精益思维方式。不要试图仅通过它的属性来提取web元素。如果你没有让他们尝试从其父或兄弟姐妹建立一个xpath。

说,HTML就像这样,

 <div id="somestatic id">
  <div id="xyz">
   <input name="dynamic one"/>  
  </div>
 </div>

然后你可以构建一个xpath,

//*[@id='staticID']/div/input

表示HTML,

   <div id="staticID"></div>
   <input name="dynamic one"/>  

xpath是,

//*[@id='staticID']/following-sibling::input

类似地,有n个选项可用。试一试

答案 2 :(得分:0)

尝试

driver.findElement(
   By.cssSelector("input[id*='ext-gen']")
).getAttribute("placeholder")

让我知道上述声明是否有效。