无法在Kendo UI图表上通过xpath定位SVG元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Kendo UI图表上通过xpath定位SVG元素相关的知识,希望对你有一定的参考价值。

我确实尝试了一些xpath但似乎没有运气。

我想点击国家然后图表,如下截图:

enter image description here

网站网址是:https://demos.telerik.com/kendo-ui/bar-charts/column

我试过xpaths:

//text(text()='India')


 //g//text(text()='India')
答案

由于所需的元素是SVG Elements,您需要考虑命名空间并诱导WebDriverWait以使所需元素可单击,并单击图形中的第一个条,您可以使用以下解决方案:

  • 代码块: from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_argument("disable-infobars") options.add_argument("--disable-extensions") driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:UtilityBrowserDriverschromedriver.exe') driver.get("https://demos.telerik.com/kendo-ui/bar-charts/column") WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='chart']//*[name()='svg']//*[name()='g']//*[text()='India']//following::*[name()='path']"))).click() WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='chart']//*[name()='svg']//*[name()='g'][contains(@clip-path, 'url')]//*[name()='path']"))).click()
  • 浏览器快照:

SVG_Click

另一答案

您好,您可以使用以下Xpath //*[text()='India']单击印度

这是一个非常有用的resource

我通常打开chrome检查器,然后点击ctrl + F打开一个交互方式来测试我的xpath:

enter image description here

您可以使用他们的笔划来定位svgs,但请注意这些可能会经常更改。例如://*[@d='M54.5 164.5 L 70.5 164.5 70.5 236.5 54.5 236.5Z' and @stroke='#03a9f4']

enter image description here

另一答案

图表上的元素来自SVG-namespace,因此您无法使用通用语法来选择这些元素(您无法通过其标记名称选择元素,例如//svg//path等)

你可以尝试下面用文本text选择"India"节点:

//*[name()="text" and text()="India"]

以上是关于无法在Kendo UI图表上通过xpath定位SVG元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kendo UI 图表上包装 categoryAxis 文本

带有 Asp.net MVC 的 Kendo UI 图表

kendo-ui图表的类别标签中的换行符

Kendo UI 图表 - 如何在加载数据时显示动画?

如何通过弹出另存为窗口将 kendo ui dataviz 图表导出为 (.png) 或 (.jpg) 图像格式?

单击按钮即可设置 Kendo Ui 条形图系列