如何使用Selenium和Python通过爬虫测试非标准下拉列表



我正在一个大学项目中为网页建立一个cralwer。 现在我在网页中遇到了测试下拉列表。 具体而言,以下页面不使用标准的"下拉列表"类。

https://www.mirrorfiction.com/zh-Hant/book/406

我很难实施决策程序来判断网页中是否有下拉菜单以及下拉菜单是否已下拉。

程序员似乎使用一个名为btnGa或类似的东西。 我不能谷歌那个。
我不知道浏览器如何知道下拉标签。
html 源代码太大。 所以我只复制了下面一小部分。
html 源代码包含一个 navlist 类的 ul。 然后这个 ul 中的一个 li 标签包含另一个 ul,它实际上是悬停时的下拉列表。
但我真的看不出浏览器如何知道这是一个下拉列表。 因此,我不知道如何编写测试用例来单击此下拉列表中的按钮。

任何人都可以帮助我识别下拉列表并单击下拉列表项吗?

.HTML:

<ul class="navList">
<li class="mobileDisable">
<a data-ga-label="小說" data-ga-action="click" data-ga-category="header" onclick="app.navLiClick(this)" class="hasSub btnGa open" href="https://www.mirrorfiction.com/zh-Hant/list/novel">
<span class="text novel">小說</span>
</a>
<ul>
<li>
<a data-ga-label="小說-仙俠" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/11">
<span class="text">仙俠</span>
<span class="num">/ 16</span>
</a>
</li>
<li>
<a data-ga-label="小說-玄幻" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/9">
<span class="text">玄幻</span>
<span class="num">/ 24</span>
</a>
</li>
<li>
<a data-ga-label="小說-奇幻" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/29">
<span class="text">奇幻</span>
<span class="num">/ 56</span>
</a>
</li>
<li>
<a data-ga-label="小說-武俠" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/10">
<span class="text">武俠</span>
<span class="num">/ 11</span>
</a>
</li>
<li>
<a data-ga-label="小說-科幻" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/8">
<span class="text">科幻</span>
<span class="num">/ 17</span>
</a>
</li>
<li>
<a data-ga-label="小說-恐怖" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/30">
<span class="text">恐怖</span>
<span class="num">/ 11</span>
</a>
</li>
<li>
<a data-ga-label="小說-校園" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/7">
<span class="text">校園</span>
<span class="num">/ 16</span>
</a>
</li>
<li>
<a data-ga-label="小說-愛情" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/1">
<span class="text">愛情</span>
<span class="num">/ 78</span>
</a>
</li>
<li>
<a data-ga-label="小說-寫實" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/5">
<span class="text">寫實</span>
<span class="num">/ 48</span>
</a>
</li>
<li>
<a data-ga-label="小說-歷史" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/6">
<span class="text">歷史</span>
<span class="num">/ 13</span>
</a>
</li>
<li>
<a data-ga-label="小說-驚悚" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/31">
<span class="text">驚悚</span>
<span class="num">/ 24</span>
</a>
</li>
<li>
<a data-ga-label="小說-其它" data-ga-action="click" data-ga-category="header" class="btnGa" href="https://www.mirrorfiction.com/zh-Hant/list/novel/classification/12">
<span class="text">其它</span>
<span class="num">/ 40</span>
</a>
</li>
</ul>
</li>

考虑按照步骤和代码行打开网址并单击菜单:

  • 通过 pip 安装当前版本的硒
  • 下载最新的 chromedriver .exe并在脚本中提供绝对路径
  • 代码块:

    from selenium import webdriver
    driver=webdriver.Chrome("C:\Utility\your_directory\chromedriver.exe")
    #maximize the browser window
    driver.maximize_window()
    #open the url in the browser
    driver.get("https://www.mirrorfiction.com/zh-Hant/book/406")
    #click on the first menu item 小說
    driver.find_element_by_xpath("//nav[@id='nav']/div/ul/li/a/span[@class='text novel']").click()
    

最新更新