当前位置: 首页 > 知识库问答 >
问题:

无法通过剑道UI图表上的xpath定位SVG元素

巫马正卿
2023-03-14

我确实尝试过一些XPath,但似乎运气不好。

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

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

我尝试了XPath:

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


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

共有3个答案

卫高谊
2023-03-14

当所需元素是SVG元素时,需要考虑命名空间并诱导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:\Utility\BrowserDrivers\chromedriver.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()

浏览器快照:

闻人思聪
2023-03-14

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

您可以尝试在下面选择文本为“印度”的节点:

//*[name()="text" and text()="India"]
燕琛
2023-03-14

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

这是一个非常有用的资源

我通常会打开chrome inspector,然后点击cntrl F打开一个交互式方式来测试我的XPath:

您可以通过使用svgs的笔画来锁定它们,但是请注意这些笔画可能会经常变化。例如://*[@d='M54.5 164.5 L70.5 164.5 70.5 236.5 54.5 236.5Z'and@行程='#03a9f4']

 类似资料:
  • 你知道为什么吗?

  • 我试图通过selenium单击save按钮,但是,我得到的错误是它无法定位元素。 这是网站的html部分 这是我得到的错误: NoSuchelementException:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“divflashviewermain_savepdfbuttonicon”} (会话信息:chrome=74.0.3729.169)(驱动程序信息

  • 嗨,我是一个相当新的硒。可以有人请建议如何定位和元素在iframe asi是得到错误下面。 带有Iframe标记的DOM按钮元素的屏幕截图 以前编写的代码

  • 我试图引用并单击网页上的元素。 我们应该能够使用简单的XPath进行引用。例如 然而,这似乎并不奏效。 我使用的chrome扩展表示该元素不存在。 我的代码找不到元素。 下面是我使用Selenium web驱动程序的Java代码。 以下是错误: 太奇怪了!关于为什么我不能引用元素,或者为什么xPath不exist的任何想法。

  • 这就是我得到的错误

  • 问题内容: 如何通过给定的org.w3c.dom.document上的xpath字符串快速定位元素/元素?似乎没有办法。例如 我发现,当有许多同名元素时,递归遍历所有子节点级别的速度非常慢。有什么建议? 我不能使用任何解析器或库,只能与w3c dom文档一起使用。 问题答案: 试试这个: 带有以下文件: