用于粗体标记的Selenium XPath

用于粗体标记的Selenium XPath,selenium,xpath,Selenium,Xpath,下面是包含b粗体标记的HTML,我想获取XPath .. Xyz 01/01/2019 .. Abc 我提出了这个xpath://div[@class='get-HTML']/b,但是还有许多其他的b标记 例如,如果我必须阅读下面标签上的文本,我如何才能做到精确 01/01/2019 ` 尝试了此xpath,但无效: //div[@class='get-HTML']/b[2] 你能帮我破解这个xpath吗 因为HTML树在所有b元素之上都是相同的——也就是说,tr/td/div/b总是检索3个

下面是包含b粗体标记的HTML,我想获取XPath

.. Xyz 01/01/2019 .. Abc 我提出了这个xpath://div[@class='get-HTML']/b,但是还有许多其他的b标记

例如,如果我必须阅读下面标签上的文本,我如何才能做到精确

01/01/2019 ` 尝试了此xpath,但无效:

//div[@class='get-HTML']/b[2]

你能帮我破解这个xpath吗

因为HTML树在所有b元素之上都是相同的——也就是说,tr/td/div/b总是检索3个不同的b元素,所以您需要使用索引来访问所需的元素

根据要检索的b标记,您需要使用td元素的索引来获取标记,因为同一级别上有多个td元素:

//tr/td[index]/div/b
应用此示例,我们可以检索b标记,如下所示:

获取Xyz://tr/td[2]/div/b

要获得2019年1月1日/tr/td[3]/div/b

获取abc://tr/td[5]/div/b

或者,如果希望根据b标记的文本获取b标记,则路径不同:

//b[text()='xyz']

但是,这只会得到一个b元素,并且您必须事先知道它的文本,因此,如果您不知道b元素中的文本,那么这种方法是不可取的。

如果您想真正具体,请在XPath中包含更多父元素

始终获取正确XPath的简单技巧:使用Google Chrome Inspector>选择元素>右键单击HTML标记>复制>XPath

在这种情况下:

.. Xyz 01/01/2019 .. Abc 第三个b标记的XPath是:/html/body/div[3]/b

在您的情况下,可能需要删除/html/body/可能不需要。这取决于HTML代码所在的父元素


注意:如果使用这种精确的方法,那么当您使用不同的父元素时,XPath会发生变化。在动态生成的页面上实现它可能会更困难。

您能试试这个xpath并告诉我它是否有效吗//div[@class='get-HTML']/b[2]请尝试此xpath://b[text and./parent::*[@class='get-HTML']]您好,我必须使用IE浏览器和我的测试,在工作中没有使用其他浏览器的特权。在IE im中,使用MRI验证元素。如果我在下面给出xpath,它不会标识://tr/td[3]/div/b,它会给出找到的0个元素。知道为什么吗?我不太确定,我在浏览器中测试了XPath,结果很成功。如果您发布完整的HTML或指向正在自动运行的页面的链接,这将有助于跟踪问题。