Selenium 获取嵌套<;李>;标签也…只需要直接<;李>;项目
我有一个页面结构,其中包括具有不同级别嵌套列表项的超链接。我正在为第二个嵌套列表项(级别2)编写Selenium 获取嵌套<;李>;标签也…只需要直接<;李>;项目,selenium,xpath,Selenium,Xpath,我有一个页面结构,其中包括具有不同级别嵌套列表项的超链接。我正在为第二个嵌套列表项(级别2)编写xpath,但它也为我提供了级别2(级别3或更低)以下的所有列表项,我不需要这些。现在我真的很沮丧,因为我尝试了不同的xpath和css选择器,每次它都将3级列表项与2级列表项一起使用 页面结构如下所示: <div> <ul class="menuBar_menu_lvl_0"> <li class="item_lvl_1">
xpath
,但它也为我提供了级别2(级别3或更低)以下的所有列表项,我不需要这些。现在我真的很沮丧,因为我尝试了不同的xpath
和css选择器
,每次它都将3级列表项与2级列表项一起使用
页面结构如下所示:
<div>
<ul class="menuBar_menu_lvl_0">
<li class="item_lvl_1">
<li class="item_lvl_1">
<ul class="menu_lvl_1">
<li class="item_lvl_2"></li>
<li class="item_lvl_2"></li>
<li class="item_lvl_2">
<ul class="menu_lvl_2">
<li class="item_lvl_3"></li>
<li class="item_lvl_3"></li>
<li class="item_lvl_3"></li>
</ul>
</li>
</ul>
<li class="item_lvl_1">
<li class="item_lvl_1">
xpath = //ul[@class="menuBar_menu_lvl_0"]//li[@class="item_lvl_1"]//ul[@class="menu_lvl_1"]//li[@class="item_lvl_2"]
-
-
-
-
-
xpath=//ul[@class=“menuBar\u menu\u lvl\u 0”]//li[@class=“item\u lvl\u 1”]//ul[@class=“menu\u lvl\u 1”]//li[@class=“item\u lvl\u 2”]
这也给了我项目编号3元素以及项目级别2。我想分别正确地获取每个级别的项目。非常感谢任何人的帮助欢迎来到SO。
这是使用的示例。
-
-
级别1-li1
第1-2级
-
级别2-li1
级别2-li2
级别2-li1
1-li3级
maven标签的原因是什么?我无法重现您的问题。检查@Alejandro我很抱歉在这方面没有太多的描述性,但是我正在处理的页面的html看起来完全一样。问题是我只想得到等级1LI
项目,但是你的xpath显示你试图获取LI[@class=“item\u lvl\u 2”]
。。。这不是一级LI
。这不可能是您正在使用的HTML的确切结构,因为没有一个第一级LI
s正确关闭。如果您将文本放入所需的每个LI
s中,然后显示预期输出,效果会更好。现在每个人都在猜测,因为问题不清楚。谢谢,但我需要“菜单级别1”列表项,它有进一步的升级,我只是不需要“菜单级别1”的进一步级别的项目。您给出的解决方案是只返回“menu\u lvl\u 1”项,这些项没有任何进一步的调整。另外,这个解决方案是在chrome上获取元素,但每次都返回空文本。好的,试试这个//ul[@class=“menu\u lvl\u 1”]//li[not(parent::ul[@class='menu\u lvl\u 2'])]
。我没有看到所有lis的任何文本(至少在您提供的代码中),请使用屏幕截图和用于测试的源代码检查更新后的答案。我也尝试过这样做,因为它显示了所有菜单级别1项,但当我运行它时,它也会以相应的方式为我提供菜单级别2项以及每个菜单级别1项。我想我必须用“\n”分割我的答案,才能得到字符串文本的第一行,这正是我需要的。我只是想知道为什么我要把这一切都安排在一起。非常感谢你的帮助!如果您查看我的屏幕截图,我将使用自定义方法仅从父节点获取文本。这就是为什么我得到了想要的结果。如果您愿意,我可以共享我编写的仅获取父文本的方法,忽略子文本。