繁体   English   中英

找不到使用 selenium 按下的按钮

[英]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 symbollike按钮?

你可以这样做

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM