如何使用SeleniumWebDriverforPython扩展列表

2024-04-26 01:14:40 发布

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

我试图用Selenium WebDriver for Python扩展一个列表,该列表由一个按钮控制,如下所示:

List When Closed

要让您了解它在打开时的外观,请执行以下操作:

List When Open

HTML如下所示:

<div>  ##just for more information on the tree
<div>  ##
<ul>   ##

<li>
role = "presentation"
ng-if = "session.hasOccurrences" ## this is the name of a span
class = "expand-children ng-scope"

<button
role = "button"
class = "icon-button has tooltip" 
bb-translate-attrs = "{aria-label ': 'session.session-list.toggle-occurrences-aria'}"
aria-pressed = "false"
ng-click = "expand()"
aria-label = "Toggle session occurrences">
</button>

</li>

</ul>  ##
</div> ##
</div> ##

由于它有一个标签名“button”,我尝试使用以下方法,但没有成功:

url = 'Example.com'
driver = webdriver.Chrome()
driver.get(url)

driver.find_element_by_tag_name("button").click()

我尝试使用xpath和CSS选择器,但我对它们的使用经验很少。我可以做些什么来扩展列表吗

提前谢谢你的帮助

更新日期:2020年6月6日

我的生活变得艰难,因为我试图访问的网页上有JS。这个JS所做的一个改变是它隐藏了一些元素的路径。这很奇怪;在web页面上,它们是可访问和可单击的,但XPATH无法找到它们

我试图通过使用ActionChains在页面上定位一个可访问的元素,然后切换到我想要访问的元素中并单击它,从而智取这一点。但是当我通过制表符到达元素时,我不能单击它。我打印元素以查看Python看到的内容,它看到的是“无”。有什么解决办法吗


Tags: thediv元素列表forsessiondriverbutton
2条回答

请尝试类似以下的xpath

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//ul/li/button[@class='icon-button has tooltip']"))).click()

这完全基于您共享的html,换句话说,假设xpath只匹配页面上的一个项目

所需进口:

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

在XPath中使用“contains method”,如下所述

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//ul/li/button[contains(@class,'icon-button has tooltip')]"))).click()

相关问题 更多 >