HTML:
/html/body/div/main/div/div/div[2]/div/div/div/div[1]/div/div***[4]***/div/div[2] the div[4]
6 Réponses :
Vous écrivez le code suivant
driver.findElement(By.xpath("//div[normalize-space()='Cloth']").click
Ça ne fonctionne pas pour deux mots Exemple "Accessoires de mode"
Je n'ai pas eu votre question alors. Vous avez dit que vous souhaitez localiser la division qui a le chiffon de texte que j'ai fait. Si vous souhaitez localiser la DIV avec le texte acessoires de mode code>, puis écrivez
pilote.findElement (by.xpath ("// div [normalize-espace () = 'Fashio N Acessories'] ") .Cliquez sur Code>. Votre question n'est pas assez claire pour comprendre ce que vous voulez vraiment.
Ça ne fonctionnera que lors de l'ajout de pilote.findellement (by.xpath ("// div [texte (texte () normalize-espace () = 'Acessories de la mode']"). Je dois ajouter du texte ()
Celui-ci est le mauvais xPath // div [texte () normalize-espace () = 'Acessories de la mode'] code>, je ne vous ai pas demandé d'ajouter du texte (). Cela fonctionnerait parfaitement si vous ne remplacez que la chaîne
chiffon code> avec
acessoires de mode code>
absolu xpath: il contient le chemin complet de l'élément racine à l'élément de désir.
XPath relatif: Cela ressemble davantage à commencer simplement en référençant l'élément que vous souhaitez et passez de l'emplacement particulier. p>
Vous utilisez toujours le chemin relatif pour tester un élément. La raison derrière celle-ci est que si vous apportez une modification architecturale du site Web, le changement n'augmente pas le test ou la sélection de l'élément. P>
Utilisez donc une relative xpath qui est comme suit P>
WebElement cloth = driver.findElement(By.xpath("//div[normalize-space()='Cloth']")); cloth.click();
Je recommanderais d'utiliser XPath personnalisé. Comme indiqué ci-dessous:
driver.findElement(By.xpath("//div[contains(text(), 'Cloth')]").click driver.findElement(By.xpath("//div[contains(text(), 'Fashion Acessories')]").click
Vous devez utiliser un groupe XPath relatif dans ce cas. P>
Vous pouvez utiliser n'importe quel XPath des options ci-dessous. Les deux premiers trouveront l'élément par texte et la 3ème option par classe. P>
Faites-moi savoir si le même nom de classe existe également pour d'autres éléments. P> 1 >> pilote.findElement (by.xpath ("// div [contient (texte (), 'tissu')]")))))))))))))). Cliquez sur (); P> P> P> P>
2 >> pilote.findElement (by.xpath ("// * [contient (texte (), 'tissu')]")))))))))). Cliquez sur (); P> P> P>
3 >> pilote.findElement (by.xpath ("// div [@ class = 'composant-multifil ligne-title-title']") "). Cliquez sur (); Code> < / p>
Juste pour vous Référence: XPath est utilisé pour trouver l'emplacement de tout élément sur une page Web à l'aide de la structure HTML DOM. P>
L'inconvénient de l'absolu xpath est que s'il y a des modifications apportées dans le chemin de l'élément, alors que XPath est échoué. P>
Donc, dans ce cas XPaths relatif strong> peut être utilisé: p>
// div [contient (texte (), 'tissu')] ou // * [contient (texte (), 'tissu')] p>
// div [contient (texte (), 'Acessories de la mode')] ou // * [contient (texte (), 'mode
Acessories ')] P>
Pour commencer par l'utilisation de XPath Absolute, présentez certains inconvénients, comme lorsque les nouveaux éléments sont ajoutés, le xpath em> des éléments précédemment identifiés continuera à changer. Par conséquent, la solution serait d'utiliser XPath relative fort>. Selon le HTML que vous avez fourni, cliquez sur l'élément avec du texte sous la forme Tissu Strong> Vous pouvez utiliser ce qui suit < a href = "https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890"> Locator stratégie : p> xpath em> a: p>
xpath em> b: p>