如何在Python中使用Selenium选择伪元素并点击指定元素?
如何点击仅伪元素文本不同的“Practical”元素?

这两个元素除伪元素中的文本外,其余属性完全相同。请问是否有办法点击“Practical”元素?我尝试了以下方法但均无效:
driver.find_element(By.XPATH, "//div[contains(text(),'Practical')]").click() driver.find_element(By.XPATH, "//div[@class='v-tab']")[1].click()
可行解决方法
- 借助JavaScript定位伪元素文本:伪元素的文本不属于DOM节点内容,XPath无法直接匹配,可通过JavaScript获取元素伪元素的样式内容来定位:
practical_element = driver.execute_script(""" return Array.from(document.querySelectorAll('.v-tab')).find(el => window.getComputedStyle(el, ':after').content.includes('Practical') ); """) practical_element.click()
- 修正XPath索引定位:XPath中节点索引从1开始,之前的
[1]对应第一个元素,目标是第二个的话要改为[2]:
driver.find_element(By.XPATH, "(//div[@class='v-tab'])[2]").click()
- 等待元素可交互后点击:如果点击无效是因为元素未加载或被遮挡,可先等待元素处于可交互状态:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) practical_tab = wait.until(EC.element_to_be_clickable((By.XPATH, "(//div[@class='v-tab'])[2]"))) practical_tab.click()
内容的提问来源于stack exchange,提问作者gabethechef
相关产品推荐
相关产品推荐

