Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 获取嵌套<;李>;标签也…只需要直接<;李>;项目_Selenium_Xpath - Fatal编程技术网

Selenium 获取嵌套<;李>;标签也…只需要直接<;李>;项目

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">

我有一个页面结构,其中包括具有不同级别嵌套列表项的超链接。我正在为第二个嵌套列表项(级别2)编写
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看起来完全一样。问题是我只想得到等级1
  • 的物品,别的什么都不要。如果你能为这个问题推荐一个xpath,那就太好了。你说你只想要级别1的
    LI
    项目,但是你的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”分割我的答案,才能得到字符串文本的第一行,这正是我需要的。我只是想知道为什么我要把这一切都安排在一起。非常感谢你的帮助!如果您查看我的屏幕截图,我将使用自定义方法仅从父节点获取文本。这就是为什么我得到了想要的结果。如果您愿意,我可以共享我编写的仅获取父文本的方法,忽略子文本。