这里我想填写输入字段,但无法通过Xpath访问它... Plz帮帮我..
以及守则如下......
<table class="detailList" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="labelCol">
<div id="div1">
<div class="pbSubsection">
<table class="detailList" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="data2Col" colspan="2">
<span style="font-Size:12px;">
Process Name
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
<td style="text-align:left;" class="data2Col">
<div id=div2">
<div class="pbSubsection">
<table class="detailList" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="data2Col" colspan="2">
<div id="div3" class="requiredInput">
<div id="div4" class="requiredBlock"></div>
<input name="pName" style="width:50%;" type="text">
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
我正在尝试
WebElement ele = driver.findElement(By.xpath(“// span [text()='Process Name'] / preceding :: td / div / input [@ type ='text']”)); < / p>
ele.sendKeys(“PM 001”);
但是在此之前,我知道它的错误.Plz帮我解决这个问题.......
此处输入和div id的name属性值将动态更改...
所以iam试图通过标签和前面的输入标签找到...
先谢谢
答案 0 :(得分:1)
你的XPath是完全错误的。
//span[normalize-space(text())='Process Name']/ancestor::tr/descendant::input
你的目标是什么。
如果name
的{{1}}没有变化,您可以通过以下方式获取:
input
你的XPath只是因为driver.findElement(By.name("pName"));
在“进程名称”周围有一个很多的whitespacing而在第一个障碍中失败,所以使用span
强制它剥离在比较之前,文本中有空格。
你也会在下一站徘徊,normalize-space
......你在这里是preceding
的水平,它就像你可以去的那样深,它没有'先于'它首先。
答案 1 :(得分:0)
// span [normalize-space()='Process Name'] // ancestor :: tr // div //输入[@type ='text']