【问题标题】:Can't find SVG element on google calender (python)在谷歌日历(python)上找不到 SVG 元素
【发布时间】:2020-11-10 22:54:17
【问题描述】:

我正在尝试删除 Google 议程上的活动。但是每次我收到一个错误,说 webdriver 找不到元素。 image of element

Exception has occurred: TimeoutException
Message: 
  File "C:\Users\cuyve\Desktop\git\ss-tasks\google_agenda_API.py", line 105, in delete_event
    delete = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[4]/div/div/div[2]/span/div/div/div[1]/div/div/div[2]/div[2]/div/span/span/svg")))

我尝试使用不同的选择器,但没有成功 这是我的代码:

delete = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[4]/div/div/div[2]/span/div/div/div[1]/div/div/div[2]/div[2]/div/span/span/svg")))
delete.click()

【问题讨论】:

    标签: html python-3.x selenium svg


    【解决方案1】:

    Xpath 在正常方法中无法定位 svg 元素。

    代替:

    //svg
    

    你需要使用:

    //*[name()='svg']
    

    您还应该避免使用硬编码的 xpath。当前路径下页面任何部分的任何更改(这是一条很长的路径)都会中断。

    对于你的谷歌日历,你可以使用这个:

    //div[@data-tooltip='Delete event']//*[name()='svg']
    

    匹配单个唯一标识符,如下所示:

    【讨论】:

    • 感谢驱动程序找到了该元素,但它不会点击它。没有错误消息,但什么也没发生
    • @Arnz3 - 尝试 webdriver 等待以确保对象已准备好并且可点击或尝试其他标识符 :-) - 这个问题已经存在几周了,现在您可能需要考虑提出一个新问题来获取更多支持
    • 我发现了问题,如果你在标识符中使用 name(),它只是 selenium 不会点击元素我用 //div[@data-tooltip="Afspraak verwijderen"]//* 修复它[@class="NMm5M"]
    猜你喜欢
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多