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:
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')
3 Réponses :
Bonjour, vous pouvez cliquer sur l'Inde avec le Xpath suivant //*[text()='India'
Ceci est une ressource
très utileJ'ouvre généralement l'inspecteur de chrome, puis j'appuie sur cntrl + F pour ouvrir un moyen interactif de tester mes xpaths:
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 ']
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
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"]
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: