如何用硒找到svg元素?

How to find svg element with selenium?

我正在构建一个 python Instagram 机器人,我试图让它点击 DM 图标,但我不确定如何 select 它。

我尝试通过 Xpath selecting,但我似乎无法将它导航到图标。 这是 Instagram 的 html DM 图标代码:

<svg aria-label="Messenger" class="_8-yf5 " color="#262626" fill="#262626" height="24" role="img" viewBox="0 0 24 24" width="24">

感谢任何帮助。

您必须应用稍微不同的定位器策略才能找到 svg

这是有效的方法:

driver.find_element(By.XPATH, "//*[name()='svg']")

假设这是唯一的 svg 元素(在您的查询中提供)

来自同一 DOM 行的多个属性的组合:

//*[name()='svg' and @aria-label='Messenger']

所需的元素是 element so to on the element you have to induce WebDriverWait for the and you can use either of the following :

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "svg[aria-label='Messenger']"))).click()
    
  • 使用 XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[name()='svg' and @aria-label='Messenger']"))).click()
    
  • 注意:您必须添加以下导入:

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

参考资料

您可以在以下位置找到关于 的一些相关讨论: