Python selenium webdriver展开的accordion-container (take two)

问题描述 投票:0回答:1

我一直在构建一个搜刮器,效果很好,但需要我手动展开隐藏数据才能成功搜刮。我检查了网页的源代码,数据位于3个不同的手风琴容器中。

有一个可点击的表头横幅,其中包含一些同样被刮除的表头元素。我已经尝试了所有可能包含可点击元素的表头内的xpath,以及像这样的代码。

driver.find_element_by_xpath('//*[@id="income-statement-accordion"]/thead/tr/th[1]').click

但没有任何可能的xpath组合可以扩展表格。 当我查看源码时,当我点击表头时,唯一出现变化的源码如下所示:

<table _ngcontent-ng-lseg-c34="" class="full-width income-statement swipable-table accordion-container" id="income-statement-accordion"> == $0

的变化(我不知道这其中的重要性。== $0?):

<table _ngcontent-ng-lseg-c34="" class="full-width income-statement swipable-table accordion-container active-accordion" id="income-statement-accordion">

我在这里看过一个类似的问题。在python中用硒打开一个手风琴。. 然而,试图采取类似的措施,不会做任何事情,虽然承认提交没有错误,并返回 none:

driver.execute_script("document.getElementById('income-statement-accordion').class='full-width income-statement swipable-table accordion-container active-accordion';")

我缺少什么?

javascript python selenium-webdriver accordion
1个回答
0
投票

这似乎是可行的

elements = driver.find_elements_by_xpath("//span[contains(@class, 'accordion-toggler')]")
for element in elements:
    driver.execute_script("arguments[0].click();", element)

这将扩大 手风琴部分。

如果你只是想针对个别章节

element = driver.find_element_by_xpath("//table[@id='income-statement-accordion']//span[contains(@class, 'accordion-toggler')]")
driver.execute_script("arguments[0].click();", element)

我们需要使用javascript来点击元素,因为selenium没有将它们归类为 "可交互"。

© www.soinside.com 2019 - 2024. All rights reserved.