我正在用 Selenium 构建一个刮刀,除了缺少一个数据字段之外,我已经启动并运行了它。我需要先按下按钮,然后获取值。但我无法按下按钮,因为我似乎无法构建正确的 xpath 表达式来使用 selenium 获取它,
网址是这个:https://www.ikea.com/mx/es/p/kallax-estante-blanco-80275887/
我需要单击“Medidas”按钮(在页面中间滚动,位于“Detalles del Producto”和“Productosimites”之间)以打开侧面板并获取我需要的信息。 但到目前为止,我还无法为按钮设置正确的 XPATH 表达式。
我尝试过
driver.find_element_by_xpath(
"//button[@class='range-revamp-chunky-header']"
).click()
但是这样它点击了第一个按钮(“Detalles del Producto”)
还尝试过类似的东西
driver.find_element_by_xpath(
"//button[@class='range-revamp-chunky-header' AND @text='Medidas']"
).click()
但我无法使其工作,我刚刚收到此错误:
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[@class='range-revamp-chunky-header' and @text='Medidas']"}
顺便说一下,按钮列表是动态的...有时,可以有 1、2、3 或 4 个具有相同类的按钮,我能看到的唯一区别是按钮的文本,所以总是具有该类的第二个按钮(如提供的 URL 中所示)并不总是有效。
最佳答案
要单击文本为 Medidas 的元素,您可以使用以下 Locator Strategy :
使用xpath:
driver.find_element(By.XPATH, "//span[text()='Medidas']").click()
理想情况下,您需要诱导 WebDriverWait对于 element_to_be_clickable()您可以使用以下任一 Locator Strategy :
使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[contains(., 'login or register')]"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
关于python - 构建 XPATH 表达式以获取并单击按钮元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70206988/