2013-11-14 3 views
0

Я пытаюсь автоматизировать регистрацию в http://wallethub.com/ с использованием кода selenium java. После того, как вы нажмете ссылку «Входящие», модальное всплывающее окно с iframe содержит поля имени пользователя и пароля, однако я не могу найти поле имени пользователя, используя следующий код селена.selenium iframe элемент не найден

WebDriver d = new FirefoxDriver(); 
d.get("http://wallethub.com/profile/test_insurance_company/"); 
WebElement signIn = d.findElement(By.linkText("Sign In")); 
signIn.click(); 

WebElement frame = d.findElement(By.tagName("iframe")); 

WebDriver.TargetLocator locator = d.switchTo(); 
WebDriver frameDriver = locator.frame(frame); 
WebElement active = locator.activeElement(); 
frameDriver.findElement(By.id("overlay-username")).sendKeys(user); 

Мой код умирает последней строке говоря, не может найти поле «оверлей-имя пользователя», но я проверил, это поле существует в Firebug консоли.

Это на linux.

Любая помощь будет оценена по достоинству.

+0

Вы уверены, что у вас есть правильный 'iframe'? Обычная ошибка, которую я делаю, когда я просто проверяю элемент и следую за панировочными сухарями и не смотрю на источник. – MxyL

ответ

0

Как @Keikoku предположил, что вы работаете с неправильным iframe. На странице также включен GoogleTagManger. Если вы проверите frame.getAttribute("src"), вы увидите https://apis.google.com/....

Вы можете выбрать правильный IFrame с этим селектором:

frame = driver.findElement(By.cssSelector("#wh-overlay-frame-inside iframe")); 
Смежные вопросы