如何让Selenium切换到页面上的其他活动选项卡?

2024-05-18 17:51:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,需要一些帮助

我正在使用Python Selenium-Chrome提取数据,需要我的Python脚本能够在webpage上显示为选项卡的选项之间切换

尝试了多种方法让浏览器识别并单击我需要切换到的选项卡,但没有发生,并显示了我要在该选项卡上填充的字段的错误:

        <div id="tabbed-nav">            
            <ul>
                <li><a>Diary Number</a></li>
                <li><a>Case Number</a></li>
                <li><a>Party Name</a></li>
                <li><a>AOR</a></li>
                <li><a>Court / Tribunal</a></li>
归档缺陷-->;
                <li><a>Free Text</a></li>
            </ul>          
            <div>

以下是我试图让脚本单击选项卡的两种方法,由于某些原因,这两种方法不起作用

Object.find_element_by_xpath("//*[@id='tabbed-nav']/ul[1]/li[3]").click()

Object.find_element_by_xpath("//div[@id='tabbed-nav']/ul/li/a[.="Party Name"]').click()

Tags: 方法namediv脚本idnumberobjectparty
1条回答
网友
1楼 · 发布于 2024-05-18 17:51:22

在分析您的两次尝试之前,让我粘贴相关页面的当前(简化)DOM树,以供将来参考:

<div id="tabbed-nav">
   <ul class="z-tabs-nav z-tabs-mobile">
      <li><a><span class="z-title">Diary Number</span><span class="z-arrow"></span></a></li>
   </ul>
   <i class="z-dropdown-arrow"></i>
   <ul class="z-tabs-nav z-tabs-desktop">
      <li class="z-tab z-first z-active" data-link="tab1"><a class="z-link">Diary Number</a></li>
      <li class="z-tab" data-link="tab2"><a class="z-link">Case Number</a></li>
      <li class="z-tab" data-link="tab3"><a class="z-link">Party Name</a></li>
      <li class="z-tab" data-link="tab4"><a class="z-link">AOR</a></li>
      <li class="z-tab" data-link="tab5"><a class="z-link">Court / Tribunal</a></li>
      <li class="z-tab z-last" data-link="tab6"><a class="z-link">Free Text</a></li>
   </ul>
   <div class="z-container">
      <!  skipped  >
   </div>
</div>

现在是对你两次尝试的分析:

第一次尝试

Object.find_element_by_xpath("//*[@id='tabbed-nav']/ul[1]/li[3]").click()

//*[@id='tabbed-nav']中有两个ul标记-第一个用于页面的移动版本,第二个用于页面的桌面版本。 您正在选择第一个(/ul[1]),它只包含一个<li>标记,而您正在请求第三个标记。这就是为什么找不到任何元素

第二次尝试

Object.find_element_by_xpath("//div[@id='tabbed-nav']/ul/li/a[.="Party Name"]').click()

这几乎是正确的!在"'中只是一团乱。正确的xpath字符串如下所示:

Object.find_element_by_xpath("//div[@id='tabbed-nav']/ul/li/a[.='Party Name']").click()

这对于当前的DOM结构非常有效

相关问题 更多 >

    热门问题