2017-01-17 9 views
0

Я пытаюсь выполнить сканирование данных с сайта agoda.com. Я хочу отфильтровать все отзывы по языку, по-английски. Когда я делаю подсчет, основанный на селекторе, я получаю 1, однако, когда я пытаюсь щелкнуть или ждать, пока элемент будет видимым, программа выдает исключение элемента, которое не видимо после таймаута.Элемент не отображается Selenium

Это код, который я пытаюсь до сих пор

String url = "https://www.agoda.com/en-sg/resorts-world-sentosa-hard-rock-hotel/hotel/singapore-sg.html"; 
driver.get(url); 
try { 
    for (WebElement element: driver.findElements(By.xpath("//*[starts-with(@id, 'language-')]"))) { 
     if (element.getTagName().equalsIgnoreCase("input")) { 
      if (element.findElement(By.xpath("..")).getText().equalsIgnoreCase("english")) { 
       wait.until(ExpectedConditions.visibilityOf(element)); 
       element.click(); 
       break; 
      } 
     } 
    } 
}catch(Exception e){ 
    System.out.println(e.getMessage()); 
} 

Где я буду неправильно?

+0

Я не вижу никаких элементов с 'id', который начинается с' 'языка. Уточните, какой элемент вы хотите получить. – Andersson

+0

Я имею в виду раздел «Обзор языка» в фильтре отзывов. Язык-1 - это идентификатор флажка английского языка. –

ответ

1

Пожалуйста, попробуйте использовать следующий код:

// To find and click on required check-box 
WebElement element = driver.findElement(By.xpath("//div[input[starts-with(@id, 'language-')]/span[text()='English']]")); 
Actions actions = new Actions(driver); 
actions.moveToElement(element); 
actions.click(); 
actions.perform(); 
0

Невозможно быть уверенным здесь, что не так, особенно без фактической копии-копии из исключения, но одна из причин этого - элемент, присутствующий, но в настоящее время не видимый. Это может быть подавлено или выведено из окна просмотра. Если вы открываете страницу в браузере, например Chrome, поддерживающую режим «разработчик», вы можете просмотреть атрибуты элемента, чтобы подтвердить или опровергнуть это.

Примечания стороны: • Опубликуйте полную информацию о своей проблеме с вашим вопросом. Каково точное исключение, его сообщение и несколько строк трассировки стека? • Если возможно, опубликуйте сведения о веб-элементе с вашего «разработчика». • Не улавливайте Exception, обратите внимание на определенные исключения. • Скопируйте и вставьте фрагменты кода, а не перепечатывайте их. Если ваш фактический код под названием printlkn, то у вас есть более глубокие проблемы.

+0

Спасибо за заметки. Извиняюсь за неудобства. Мой код был немного грязным, поэтому я просто подумал, что переиздание будет лучше. Тем не менее, если я проверяю 'driver.findElements (By.id (" language-1 ")). Size()', это дает мне 1. Но на него нажимают –