使用selenium导航网站

2024-10-02 22:30:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个网站上搜集信息,但在使用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>

我已经知道如何从“Category 1”中提取信息,因为它是默认加载的。我如何导航到“类别2”和“类别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()

这样做不会让我像最初希望的那样按名称访问不同的选项卡,而且它可能不是最有效或非常健壮的,但是它在我的特定情况下完成了工作。你知道吗


Tags: keyin信息byling选项卡class
1条回答
网友
1楼 · 发布于 2024-10-02 22:30:43

我假设你的标签在运行时加载。 因此,要激活该选项卡,您需要使用FindElement(By)找到该选项卡并单击它,然后才能从该选项卡访问信息。你知道吗

根据你的代码,找不到使用FindElement的Id(按Id). 所以我建议你用这两种方法中的任何一种(按.CSSSelector)或发现(按.Xpath)您可以从浏览器的开发工具复制定位器字符串,即在Google Chrome中右键单击==>;检查==>;复制==>;复制选择器或复制Xpath。你知道吗

在得到Tab元素之后,即

IWebElement tab = driver.FindElement(By.CSSSelector);

tab.Click();//Tab activated
//...Do your thing afterwards.

希望这有帮助。你知道吗

相关问题 更多 >