2
votes

Impossible de localiser les éléments SVG via xpath sur le graphique de l'interface utilisateur de Kendo

J'ai essayé certains xpaths mais je n'ai pas eu de chance.

Je veux cliquer sur le pays, puis le graphique, donné ci-dessous capture d'écran:

 entrez la description de l'image ici

L'URL du site Web est: https://demos.telerik.com/kendo-ui/bar-charts/column a>

J'ai essayé xpaths:

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


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


0 commentaires

3 Réponses :


2
votes

Bonjour, vous pouvez cliquer sur l'Inde avec le Xpath suivant //*[text()='India'

Ceci est une ressource

très utile

J'ouvre généralement l'inspecteur de chrome, puis j'appuie sur cntrl + F pour ouvrir un moyen interactif de tester mes xpaths:

 entrez la description de l'image ici

Vous pouvez cibler les svgs en utilisant leurs traits, mais notez que ceux-ci peuvent changer souvent. exemple: //*[@d='M54.5 164.5 L 70.5 164.5 70.5 236.5 54.5 236.5Z 'et @stroke =' # 03a9f4 ']

 entrez la description de l'image ici


4 commentaires

Merci beaucoup, cela fonctionne, pouvez-vous s'il vous plaît aider xpath à cliquer sur le graphique après avoir cliqué sur l'Inde?


oui, sur quoi voulez-vous cliquer sur le graphique? @HelpingHands


sur n'importe quelle barre comme ici, j'ai marqué l'endroit où je veux cliquer: prntscr.com/m8fek0


ajouté plus pour vous @HelpingHands espérons que cela vous aidera! bonne chance



2
votes

Les éléments du graphique proviennent de SVG-namespace , vous ne pouvez donc pas utiliser de syntaxe commune pour sélectionnez ces éléments (vous ne pourrez pas sélectionner l'élément par son nom de balise, par exemple // svg ou // chemin , etc.)

Vous pouvez essayer ci-dessous pour sélectionner le nœud text avec le texte "India":

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


0 commentaires

0
votes

Les éléments souhaités étant des éléments SVG dont vous avez besoin prendre en compte l'espace de noms et induire WebDriverWait pour que l'élément souhaité soit cliquable et cliquer sur la première barre dans le graphique , vous pouvez utiliser la solution suivante:

  • Bloc de code:

    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()
    
  • Instantané du navigateur:

 SVG_Click


0 commentaires