Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium webdriver 无法通过剑道UI图表上的xpath找到SVG元素_Selenium Webdriver_Svg_Xpath_Kendo Ui_Webdriverwait - Fatal编程技术网

Selenium webdriver 无法通过剑道UI图表上的xpath找到SVG元素

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的笔划作为目标,但请注意,这些笔划可能会经常更改。

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

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

网站网址为:

我尝试了XPath:

//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()