2015-01-12 3 views
1

Новое в Selenium (C#). Требуется автоматизировать вход в систему третьей стороны. Когда я перемещаюсь вручную и в chrome F12> «Элемент просмотра», я вижу, что текстовые поля хороши.Тестирование генерируется html по javascript, с селеном

<input type="text" id="username" name="username" > 
<input type="password" id="password" name="password" > 

Однако, когда я делаю «Просмотр источника», я этого не вижу. Я предполагаю, что есть Javascript-код, который генерирует эту форму для входа.

В Селен - это работает на версии «View Source», конечно, - когда я следующее, я получаю - «Нет такого элемента», как и ожидалось ...

var x = Driver.FindElement(By.Name("username")); 

Возможно ли Селен к взаимодействует с полями, которые генерировались динамически, как в моем случае? Как сказать, чтобы «подождать» или погрузиться в динамическую версию html или что-то еще?

+1

Уверены ли, что на странице нет фреймов? – alecxe

+0

не так знакомы с IFrame, но вы правы, есть IFrames ... не вижу места, где я могу получить трюм и заполнить поля в этих iframes ... – user1025852

+0

ok вы абсурдно правы - это IFrame, поэтому Я пошел на страницу IFrame, и теперь я могу взаимодействовать с полями. большое спасибо!! – user1025852

ответ

1

В случае целевой элемент не внутри iframe, затем с помощью Explicit Wait должен решить проблему:

IWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(3)); 
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("username"))); 

Смотрите также: Selenium c# Webdriver: Wait Until Element is Present

Если элемент находится внутри iframe, вы должны первым switch to it:

IWebElement frame = driver.FindElement(By.Id("my_frame_id")); 
driver.SwitchTo().Frame(frame); 

Смотрите также: Finding nested iFrame using Selenium 2

+0

это так здорово - справедливо ли сказать, что если селен ждет - его источник будет обновлен всем сгенерированным контентом? – user1025852

+0

@ user1025852 вы можете так сказать, в этом случае webdriver будет периодически запрашивать элемент (опрос) до тайм-аута (3 секунды в примере). Насколько я помню, интервал опроса по умолчанию составляет 500 миллисекунд. – alecxe

Смежные вопросы