Le sélénium ne pas trouver d'élément
C'est le HTML:
https://www.dropbox.com/s/aiaw2u4j7dkmui2/Untitled%20picture.png
Je ne comprends pas pourquoi ce code ne trouve pas l'élément sur la page. Le site web n'utilise pas les iframes.
@Test
public void Appointments() {
driver.findElement(By.id("ctl00_Header1_liAppointmentDiary"));
}
c'est le message d'erreur que je reçois:
FAILED: Appointments
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"ctl00_Header1_liAppointmentDiary"}
- La capture d'écran ne montre pas de n'importe quel élément avec l'id
ctl00_Header1_liAppointmentDiary
, n'est ce pas? Il y aHeader1_liAppointmentDiary
cependant... - L'id de votre image est Header1_liAppointmentDiary pas ctl00_Header1_liAppointmentDiary
- Est l'élément de l'AJAX chargé? Avez-vous essayé d'attente pour elle, que ce soit implicitement ou explicitement?
- Le lien est actuellement cassé. Pourriez-vous résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Est-ce un problème de synchronisation? Est l'élément (ou la page entière) AJAX-chargé? Il est possible qu'il n'est pas présent sur la page lorsque vous essayez de regarder pour cela, WebDriver est souvent "trop vite".
Pour le résoudre, est soit implicite ou explicite attendre.
La Implicite Attendre façon. En raison de l'implicite attendre défini, il va essayer d'attendre pour l'élément d'apparaître sur la page si elle n'est pas présente tout de suite (ce qui est le cas de requêtes asynchrones) jusqu'à ce qu'il arrive et jette comme d'habitude:
La Explicite Attendre façon. Cela ne attendez pour un seul élément à être présent sur la page lors de la recherche pour elle. À l'aide de la
ExpectedConditions
de classe, vous pouvez attendre pour différentes choses, l'élément visible, cliquable, etc.:Vous êtes à la recherche pour
ctl00_Header1_liAppointmentDiary
, mais il est seulementHeader1_liAppointmentDiary
, ceux ne sont pas les mêmes...Il n'y a pas d'élément avec
id="ctl00_Header1_liAppointmentDiary"
dans votre code htmlDevrait être
essayer
driver.findElement(By.ClassName("MyAppointments"));
Si webdriver ne pouvez pas trouver un élément par xpath ou id, il est généralement une bonne idée d'essayer toutes les options qui pourraient travailler
http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/By.html
Regardant le code, je pense que le lien que vous essayez de cliquez est en vertu d'un menu déroulant ou vous avez besoin de la souris sur quelque chose de voir ce lien. Si c'est le cas, alors vous devrez faire l'élément visible à effectuer l'action.
NoSuchElementException
. Quand vous seriez alors essayez d'interagir avec l'élément, il serait jeterElementNotVisibleException
.