【发布时间】:2017-04-19 23:42:33
【问题描述】:
我正在尝试从网站上抓取信息,但在使用 Selenium 导航时遇到问题。该站点使用 ng-click 更新表格,因此我必须激活页面上的不同选项卡以获取我想要的信息。这是生成选项卡的 html:
<ul class="tabs swiper-wrapper" ng-class="{'swiper-wrapper' : swiperActive }">
<li ng-repeat="category in Report.Winners track by $index" ng-click="updateCategory(category.key)" ng-class="{'active' : category.key == activeCategory, 'swiper-slide' : swiperActive }" class="ng-scope active">
<p class="category text-small ng-binding">Category 1</p>
<p class="winner">
</p>
</li><li ng-repeat="category in Report.Winners track by $index" ng-click="updateCategory(category.key)" ng-class="{'active' : category.key == activeCategory, 'swiper-slide' : swiperActive }" class="ng-scope">
<p class="category text-small ng-binding">Category 2</p>
<p class="winner">
</p>
</li><li ng-repeat="category in Report.Winners track by $index" ng-click="updateCategory(category.key)" ng-class="{'active' : category.key == activeCategory, 'swiper-slide' : swiperActive }" class="ng-scope">
<p class="category text-small ng-binding">Category 3</p>
<p class="winner">
</p>
</li>
</ul>
我已经弄清楚如何从“类别 1”中抓取信息,因为它默认加载。如何导航到“Category 2”和“Category 3”以便我也可以抓取它们?谢谢!
更新:
我最终使用它来查找每个类别的链接:
available_categories_links = browser.find_elements_by_css_selector("ul > [ng-click*=updateCategory]")
然后我像这样遍历它们:
for x in range(len(available_categories_links)):
available_categories_links[x].click()
这样做不会让我像最初希望的那样按名称访问不同的选项卡,而且它可能不是最有效或非常健壮的,但它可以在我的特定情况下完成工作。
【问题讨论】:
-
您是否尝试过通过链接文本查找元素?例如
driver.find_element_by_link_text("Category 2") -
是的,我试过了。当我这样做时,我得到一个“NoSuchElementException”。我认为这是因为我要搜索的文本是我要单击的元素的子元素?
标签: python angularjs selenium beautifulsoup