[英]Can't locate a button using selenium to press on it
我在 python 中创建了一个脚本,使用 selenium 单击网页中可用的类似按钮。 我已经使用 xpath 来定位该按钮,并且我认为我已经正确使用了它。 但是,该脚本似乎没有找到该按钮,因此它抛出TimeoutException
错误,指向包含 xpath 的行。
由于在不登录的情况下无法点击类似按钮,我希望脚本能够将相关的 html 连接到该按钮,以便我知道我可以正确定位它。
我试过:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
link = "https://www.instagram.com/p/CBi_eIuAwbG/"
with webdriver.Chrome() as driver:
wait = WebDriverWait(driver,10)
driver.get(link)
item = wait.until(EC.visibility_of_element_located((By.XPATH,"//button[./svg[@aria-label='Like']]")))
print(item.get_attribute("innerHTML"))
如何使用 selenium 找到显示为
heart symbol
的like
按钮?
你可以这样做
likeSVG = driver.find_element(By.CSS_SELECTOR, 'svg[aria-label="Like"]')
likeBtn = likeSVG.find_element(By.XPATH, './..')
likeBtn.click()
likeBtn
等于likeSVG
div 的父级,因为您可以使用 XPATH 类似于 CLI 中的文件导航命令。
要点击Like
按钮诱导WebDriverWait
() 并等待visibility_of_element_located
() 和xpath
以下。
然后将元素滚动到视图中并单击。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://www.instagram.com/p/CBi_eIuAwbG/")
element=WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//button[.//*[name()='svg' and @aria-label='Like']]")))
element.location_once_scrolled_into_view
element.click()
尝试使用.find_element_by_xpath(xPath)
方法(使用完整的 xpath):
likeXPATH = "/html/body/div[1]/section/main/div/div[1]/article/div[2]/section[1]/span[1]/button"
likeElement = driver.find_element_by_xpath(likeXPATH)
likeElement.click()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.