本例中的HTML中svg的正确xpath是什么?

2024-09-30 04:29:07 发布

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

到目前为止,我有以下代码:

like_button =  driver.find_element_by_xpath('//div[@class="QBdPU "]/*[name()="svg"][@aria-label="Like"]')
like_button().click()

与以下HTML对应(我尝试单击svg部分): enter image description here

我想知道是否有人可以更正我的xpath


Tags: 代码namesvgdivbydriverbuttonelement
3条回答

尝试将xpath表达式更改为

//div[@class="QBdPU "]/span/*[name()="svg" and @aria-label="Like"]

看看它是否有效

要在Instagram上的Like按钮上识别和click(),您可以使用以下任一Locator Strategies

  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "//button[@type='button']//span//*[name()="svg" and @aria-label='Like']"))).click()
    
  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='button'] span > svg[aria-label="Like"]"))).click()
    

注意:您必须添加以下导入:

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

正如注释中提到的kjhughessvg元素位于HTML的不同名称空间中,因此我们在通过xpath选择它时需要小心

我看到你们试图在Instagram上使用button,我已经在Chrome上测试过了,我认为它在Selenium上也会起作用。尝试:

//*[name()="svg" and @aria-label="Like" and @height="24"]

如果您还想获得评论上的类似按钮,请删除and @height="24"。注释上的Like按钮具有and @height="12"属性

相关问题 更多 >

    热门问题