Obtenez de l'élément de la page par l'attribut title de Sélénium et de Java
Je vais essayer d'obtenir l'image qui a le mot "Collector" dans son titre et cliquez sur elle.
C'est le code html de l'image et son lien:
<a href="javascript:*command*" title="Level III: KPI Collector RYG of D D/Testing - SYS">
<img src="*unusable link because it's only valid for the specific page*" title="Level III: KPI Collector RYG of D D/Testing - SYS">
La <a>
et <img>
les balises sont imbriquées dans une cellule de tableau et quelques divs. Je n'ai pas écrit le code html afin de ne pas me crier après si c'est moche :p
Voici le code java où j'essaie de le faire:
WebElement trafficLight = driver.findElement(By.xpath("//img[contains(@title,'Collector')]"));
trafficLight.click();
L'erreur que j'obtiens est:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//img[contains(@title,'Collector')]"}
Je suis sûr que le xpath est ok donc je ne pense pas que c'est la question.
- Vérifier si l'élément est à l'intérieur d'un cadre
- Oui, il me semble que c'est dans un
<iframe>
. L'emplacement de l'image de la hiérarchie, c'est comme cela:<ton of divs>
-><iframe>
<body>
-><table>
-><tr>
-><td>
-><div>
-><span>
-><a>
-><img>
. Je devine qu'il y a une autre façon de l'obtenir, alors? - L'élément a été dans un <iframe>. Pour y accéder, j'ai utilisé la réponse ici: stackoverflow.com/questions/24247490/...
Vous devez vous connecter pour publier un commentaire.
Comme le
img
WebElement est dans un cadre, vous aurez besoin pour passer à celle de l'image avant d'effectuer toute action sur la WebElement. Vous pouvez le faire en utilisant WebDriver estswitchTo()
méthode comme suit:Le cadre localisateur peut être soit son (de base zéro) de l'indice, le nom ou l'id de l'attribut, ou un situé auparavant WebElement.
Une fois que vous avez mis l'accent jusqu'à l'image souhaitée, vous devriez être en mesure d'interagir avec les WebElement en utilisant le même code dans votre post initial.
S'il vous plaît essayer cette. Il permettra de résoudre votre problème.