【问题标题】:XPath id value changing on every session每个会话的 XPath id 值都在变化
【发布时间】:2022-10-15 19:13:12
【问题描述】:

我有一个支付提供商网站,我需要使用 Selenium 来抓取网站,因为 API 的功能有限。 第一行是导出按钮的 XPATH,代码有效,但在下一个会话中, id 发生变化。

#hover over download icon
element_to_hover_over = driver.find_element(by=By.XPATH, value='//*[@id="pIFE1qieLu"]/div[2]/div/div[1]/div/div[2]/a')

                                                               '//*[@id="LdFYNH7TGe"]/div[2]/div/div[1]/div/div[2]/a'

剩下的 XPath 行保持不变,除了 @id 符号。 如何允许这个动态变化的 id 字段?

编辑:添加html代码

[<div class="btn-group dropup pull-left">
 <a class="btn dropdown-toggle" data-toggle="dropdown">
                                                     Entries 1-200 of 8983                                                <span class="caret"></span>
 </a>
 <ul class="dropdown-menu">
 <li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/10">Display 10 entries</a></li>
 <li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/15">Display 15 entries</a></li>
 <li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/20">Display 20 entries</a></li>
 <li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/25">Display 25 entries</a></li>
 <li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/50">Display 50 entries</a></li>
 <li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/100">Display 100 entries</a></li>
 <li class="active"><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/200">Display 200 entries</a></li>
 </ul>
 </div>,
 <div class="pull-left">
 <a class="btn bx-noIcon-margin" data-original-title="Export current list" href="/index.php/filter/export/f/KbInvoiceFilter/m/kb_invoice/a/list" onclick="if (!this.getAttribute('disabled')) jq_load_dialog('/index.php/filter/export/f/KbInvoiceFilter/m/kb_invoice/a/list',{autoOpen:false, bgiframe:false, close:'function() { $(this).dialog(\'destroy\'); }', maxHeight:2000, maxWidth:2024, modal:true, resizable:false, title:'Download as Excel file', width:400},'#jqDialog'); return false;" rel="tooltip" title=""><i class="glyphicons download_alt"></i> </a> </div>,
 <div class="pull-left">
 <a class="btn bx-noIcon-margin" data-original-title="Email list documents" href="/index.php/filter/send/f/KbInvoiceFilter/m/kb_invoice/a/list" onclick="if (!this.getAttribute('disabled')) jq_load_dialog('/index.php/filter/send/f/KbInvoiceFilter/m/kb_invoice/a/list',{autoOpen:false, bgiframe:false, close:'function() { $(this).dialog(\'destroy\'); }', maxHeight:2000, maxWidth:2024, modal:true, resizable:false, title:'Email list documents', width:550},'#jqDialog'); return false;" rel="tooltip" title=""><i class="glyphicons envelope"></i> </a> </div>]

【问题讨论】:

  • 你能确认一下网址吗?
  • 该网址适用于我访问该页面。
  • 伙计,确认(陈述,写)页面的网址,以便任何愿意帮助您进行测试的人。您需要发布一个最小的可重现示例。
  • 哦,对不起,它是一家订阅公司,所以我们需要有用户名和密码。 bexio.com/en-CH
  • 我们需要一些围绕您要查找的元素的相关 HTML。当然,您想要或附近的元素中有一些独特的属性,但我们看不到它来帮助您,因为它是一个需要登录的站点。

标签: python selenium web-scraping


【解决方案1】:

如果要单击作为锚元素子元素的导出按钮图标,则 xpath 为

//a[@data-original-title="Export current list"]/child:i

CSS 选择器:

a[data-original-title="Export current list"]>i

它也应该与 xpath 一起使用

//a[@data-original-title="Export current list"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 2019-01-06
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多