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

时间:2020-10-10 14:33:26

标签: python selenium-webdriver xpath selenium-chromedriver

我是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()

1 个答案:

答案 0 :(得分:0)

在分析您的两次尝试之前,让我粘贴有问题的页面的当前(简体)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>

现在对您的两次尝试进行分析:

尝试第1次

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

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

尝试2号

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结构很好。