2016-10-22 44 views
-1

这是我的示例html代码。我无法找到输入类型=“文本”的xpath。无法使用以下兄弟找到xpath

注意:我只需要来自div id的xpath参考。

<div id="PRINTDIV"> 
    <table id="one"></table> 
    <table id="two"></table> 
</div> 

<table> 
    <tr> 
     <td> 
      <input type="button" value="post value" > 
     </td> 
     <td> 
      <input type="text" > 
     </td> 
    </tr> 
</table> 

我在下面的xpath中使用。但不工作。

/* [@ ID = 'PRINTDIV'] /以下同胞::表/ TR/TD [2]

请指正。

+0

如果您提供完整的XML,那么很多人将能够立即为您提供解决方案。没有这个,现在每个人都必须猜测... –

回答

0

您在开始时缺少斜线,需要在tr之前添加一个额外的斜线。在检查元素中,我看到一个额外的tbody标签,但我不知道为什么会这样。

"//div[@id='PRINTDIV']/following-sibling::table//tr/td/input[@type='text']" 

或用CSS

"div[id='PRINTDIV'] + table tr > td > input[type='text']" 

为什么不使用表的ID直接得到它试试?它是动态生成的ID吗?

+0

感谢您的回复。这不适合我 - xpath和CSS。 div下面的表格没有ID。现在编辑这个问题。 –

+0

我正在使用chrome中更新的html,它适用于两者。 iframe中的div和table? – Grasshopper

+0

感谢您的回复。我正在使用IE 11并且失败。刚才检查了铬。它对我来说也很完美。 System.setProperty(“webdriver.ie.driver”,“D:\\ SELENIUM \\ SEL_PRACTICE \\ driver \\ IEDriverServer.exe”);我使用下面的配置详细信息启动IE 11。 \t \t DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); \t \t caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); \t \t driver = new InternetExplorerDriver(caps); –

0

由于div不是根节点的直接子节点,因此无法通过单个/来访问它。您将不得不提供//以允许selenium解析并在DOM中找到节点。

因此// div应该能够访问该元素。

+0

谢谢。你可以请帮助我在xpath中使用相同的IE 11,它不工作。 –