我是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()
答案 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结构很好。