使用selenium查找嵌套在“concat”(XPATH)中的元素

2024-09-19 23:37:59 发布

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

我作为python开发人员开始了我的第一个项目,我正在抓取一个零售网页。站点有无限滚动,但有时您只需单击此路径内的按钮,而不是调用无限滚动:

<a href="" class="ver-mas-productos btn meanbee-infinitescroll-button" style="display: block;">VER más PRODUCTOS</a>

我尝试通过xpath通过以下方式查找元素:

/html/body/div[1]/div[1]/div[1]/div[8]/div/div/div[2]/a
//*[@id="top"]/body/div[1]/div[1]/div[1]/div[8]/div/div/div[2]/a
//*[contains(concat( " ", @class, " " ), concat( " ", "meanbee-infinitescroll-button", " " ))]

也在寻找css Conctor:

.meanbee-infinitescroll-button

或通过文本查看:

driver.find_elements_by_partial_link_text('PRODUCTOS')
driver.find_elements_by_link_text('VER más PRODUCTOS')

课堂上也试过了,部分文字,但我没能找到并点击它。我对这个世界真的很陌生,所以我假设这是因为路径的目标是一个比按钮更大的帧,我不能直接引用它,但我不确定

谢谢大家!

a screenshot of the button and the inspect part


Tags: 路径divbydriverbodybuttonelementsfind
2条回答

一个更简单的xpath就足够了:

//*[contains(@class, 'meanbee-infinitescroll-button']

您可能需要等待元素:

btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[contains(@class, 'meanbee-infinitescroll-button']')))

btn.click()

这可能是因为按钮加载需要时间。您可以尝试以下方法:

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

btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'ver-mas-productos btn meanbee-infinitescroll-button')))

btn.click()

相关问题 更多 >