【问题标题】:Selenium not finding tab link elements by various methodsSelenium 没有通过各种方法找到选项卡链接元素
【发布时间】:2020-06-20 16:08:27
【问题描述】:

我在 Selenium 通过 ID 或链接文本定位一组特定选项卡链接元素时遇到问题。使用 Selenium,我尝试单击/循环浏览每个选项卡(“描述和价格”、“完成”和“注释”)并抓取后续表格(参见屏幕截图)。

以下是选项卡的 HTML。当我的循环第一次加载页面时,“描述和价格”选项卡处于活动状态,随后的表很容易用 BeautifulSoup 抓取(通过搜索具有特定表 ID 的表)。但是,在“D+P”表被抓取后,我尝试使用 Selenium 单击“完成”选项卡,我收到 NoSucElementException 错误。

我希望能够使用链接文本方法单击“完成”和“注释”选项卡(因为选项卡因页面而异)。这会导致错误。

driver.find_element_by_link_text("FINISH").click()

我也试过ID方法,但也失败了。

driver.find_element_by_id("cphMain_tbTabs_rptTabs_lnkTab_1").click()

我还尝试了各种等待方法以防元素尚未加载,尽管在尝试等待元素 ID 时遇到相同的错误,因为它找不到 ID。

另一个考虑因素是我在 html 中没有看到任何提及 iframe。

<div id="cphMain_upTabs">

                    <div id="cphMain_divTabs" class="tabs">
                        <div id="cphMain_tbTabs_divTabs">

    <ul class="tabset">

    <li><a id="cphMain_tbTabs_rptTabs_lnkTab_0" class="tab active" href="javascript:__doPostBack(&#39;ctl00$cphMain$tbTabs$rptTabs$ctl01$lnkTab&#39;,&#39;&#39;)" style="font-weight:bold;">DESCRIPTION AND PRICE</a></li>

    <li><a id="cphMain_tbTabs_rptTabs_lnkTab_1" class="tab" href="javascript:__doPostBack(&#39;ctl00$cphMain$tbTabs$rptTabs$ctl02$lnkTab&#39;,&#39;&#39;)" style="font-weight:normal;">FINISH</a></li>

    <li><a id="cphMain_tbTabs_rptTabs_lnkTab_2" class="tab" href="javascript:__doPostBack(&#39;ctl00$cphMain$tbTabs$rptTabs$ctl04$lnkTab&#39;,&#39;&#39;)" style="font-weight:normal;">NOTES</a></li>

    </ul>

【问题讨论】:

  • 是否可以分享页面网址让我看看?根据您的尝试,我不明白为什么它不起作用,所以也许有一些我们没有看到的东西?
  • 页面 url 在登录后面,所以我无法分享所有信息。但是,我想我找到了使用 Try/Except 逻辑的解决方案。无论出于何种原因,问题似乎与我试图抓取的列表中的第一页有关。使用这种逻辑,我们会传递第一页,然后所有后续页面都会按预期进行抓取。

标签: python html selenium beautifulsoup


【解决方案1】:

看起来我的问题与我正在检查的第一页有关 - 我添加了 Try/Except 逻辑,现在我可以跳过第一页并为后续页面抓取信息。不知道第一页有什么问题...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2011-11-24
    • 2019-07-21
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多