Не удается получить XPath для WhitePages.com?

Я пытаюсь ввести имя и почтовый индекс в "People" а также "Where" поля на http://whitepages.com используя Selenium (на Java).

Я пытался использовать .//*[@id='who'] а также .//*[@id='where'] соответственно - однако Selenium выдает ошибку каждый раз, когда я запускаю программу.

Что я делаю неправильно?

3 ответа

Ключевой проблемой здесь является то, что есть несколько элементов сid="who", Используйте селектор CSS, чтобы найти нужный в форме поиска:

driver.findElement(By.cssSelector("div.callerid-skin #header form[role=search] #who"));

Вам также может понадобиться явно дождаться, пока поле станет видимым:

WebDriverWait wait = new WebDriverWait(driver, 5);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.callerid-skin #header form[role=search] #who")));

У него много элементов с id='where', в которых скрыто много элементов, поэтому он генерирует исключения для вас. Попробуйте найти видимые элементы, используя определенный локатор

Для людей (@id='who') используйте указатель ниже

By.cssSelector("#header[style] #who[data-gaaction*='people']")

Для Где (@ id = 'где') используйте ниже локатор

By.cssSelector("#header[style] #where[data-gaaction*='business']")

Если вы используете Firebug, существует несколько вариантов получения пути к элементу: 1. проверить элемент (вкладка HTML должна быть активной) 2. Щелкните правой кнопкой мыши на элементе (из источника HTML), и вы увидите несколько вариантов: - Копировать XPath - копировать минимальный XPath - копировать путь CSS

Для проблемных элементов, вы можете вставить в Notepad++ все 3 пути и немного поэкспериментировать. Это может сэкономить вам время, вместо того, чтобы начинать с самого верхнего родителя и сужаться на более коротком пути.

Другие вопросы по тегам