Selenium webdriver 无法通过剑道UI图表上的xpath找到SVG元素
我确实试过一些XPath,但似乎运气不好 我想点击国家,然后点击图表,如下截图所示: 网站网址为: 我尝试了XPath:Selenium webdriver 无法通过剑道UI图表上的xpath找到SVG元素,selenium-webdriver,svg,xpath,kendo-ui,webdriverwait,Selenium Webdriver,Svg,Xpath,Kendo Ui,Webdriverwait,我确实试过一些XPath,但似乎运气不好 我想点击国家,然后点击图表,如下截图所示: 网站网址为: 我尝试了XPath: //text(text()='India') //g//text(text()='India') 您好,您可以使用以下Xpath单击印度/*[text()='India'] 这真的很有帮助 我通常会打开chrome inspector,然后点击cntrl+F打开一个交互式方式来测试我的XPath: 您可以使用SVG的笔划作为目标,但请注意,这些笔划可能会经常更改。
//text(text()='India')
//g//text(text()='India')
您好,您可以使用以下Xpath单击印度
/*[text()='India']
这真的很有帮助
我通常会打开chrome inspector,然后点击cntrl+F打开一个交互式方式来测试我的XPath:
您可以使用SVG的笔划作为目标,但请注意,这些笔划可能会经常更改。示例:/*[@d='M54.5164.5L70.5164.570.5236.554.5236.534.5236.5Z'和@stroke='03a9f4']
图表上的元素来自,因此您不能使用通用语法来选择这些元素(您将无法通过其标记名来选择元素,例如
//svg
或//path
,等等)
您可以尝试在下面选择文本为“印度”的节点:
作为所需元素,您需要考虑命名空间并诱导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()
- 浏览器快照:
非常感谢,它很有效,请您在xpath中帮助单击图形,然后再单击印度?是的,您想单击图形上的什么@HelpingHandson任何一个像我在这里标记的我想点击的地方:为你添加更多@HelpingHands希望这有帮助!祝你好运
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()