C # прыгает некоторые текстовые поля, такие как поля поиска - PullRequest
1 голос
/ 13 января 2012

Я просто использую для заполнения некоторых текстовых полей, но иногда он пишет в неправильном текстовом поле, потому что имя текстового поля не ясно, вот мой код

IE browser = new IE(site);
browser.TextField(Find.By("type","text")).TypeTextQuickly(username.ToString());
browser.TextField(Find.By("type", //"password")).TypeTextQuickly(pass.ToString());
browser.Button(Find.By("type", "submit")).Click();

Ответы [ 3 ]

0 голосов
/ 13 января 2012

Один из вариантов может заключаться в том, чтобы посмотреть, есть ли внешний элемент (например, Div), который вы можете найти первым, а затем получить текстовые поля из этого элемента, а не из переменной браузера.Например, это может выглядеть так:

Div div = browser.Div(Find.ById("divId"));
//Div div = browser.Div(Find.ByClass("divClass")); // or like this for instance...
TextField text = div.TextField(Find.By("type", "text"));
TextField password = div.TextField(Find.By("type", "password"));
Button submit = div.Button(Find.By("type", "submit"));
0 голосов
/ 16 января 2012

Мне неясно, что вы знаете о WatiN и тестировании, поэтому начну с самого начала. Сначала вам нужно перейти на веб-страницу, которую вы хотите протестировать, и (в IE) перейти к инструментам -> Инструменты разработчика. Нажмите белую стрелку в меню, затем перейдите к полю, которое вы хотите использовать. Как только вы сделаете это, инструменты разработчика предоставят вам код для текстового поля, включая множество способов, которыми вы можете ссылаться на него в своем коде. Например, используя инструменты разработки в IE, я могу автоматизировать вход в мой gmail следующим образом:

IE browser = new IE("https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=http://mail.google.com/mail/&scc=1&ltmpl=default&ltmplcache=2"); 

browser.TextField(Find.ByID("Email")).TypeText("myemail@email.com");
browser.TextField(Find.ByID("Passwd")).TypeText("mypassword");
browser.Button(Find.ByID("signIn")).Click();

Существует множество команд Find.By, поэтому нет причин, по которым вы не можете получить доступ к ЛЮБОМУ текстовому полю, которое пожелаете. Вам просто нужен HTML и конкретный, в который вы хотите написать. Я надеюсь, что это помогает:)

0 голосов
/ 13 января 2012

Отредактируйте ваш HTML-код и настройте ID для ваших элементов ввода.Затем используйте Find.ById

...