Если вы посмотрите HTML-код веб-страницы, есть два элемента со значением поля имени «FirstName». (Вы можете найти строку '// * [@ name = "FirstName"]' в опциях разработчика, чтобы проверить.)
Таким образом, вы можете использовать что-то вроде этого, чтобы получить элемент, который вы ищете:
driver.find_elements_by_name('FirstName')[1].send_keys('test', Keys.ENTER)
Здесь метод find_elements..
возвращает список всех элементов, имеющих один и тот же локатор, вместо первого сверху, как метод find_element..
, а искомый элемент идет вторым сверху поэтому мы индексируем результат find_elements..
с индексом '1'.
Кстати, я пробовал это в Chrome, но он должен работать и в Firefox.
Можно установить cookie, чтобы быть родительским доменом во время аутентификации, но необходимо явно установить его, он примет значение по умолчанию к полному домену, что Вы идете.
, Как только подлинный cookie правильно установлен на родительский домен, тогда все субдомены должны быть в состоянии считать его.
Когда Вы аутентифицируете пользователя, устанавливаете домен cookie аутентификации на домен второго уровня, т.е. parent.com. Каждый субдомен получит cookie родительского домена по запросу, таким образом, аутентификация по каждому будет возможна, так как у Вас будет общий cookie аутентификации для работы с.
Код аутентификации:
System.Web.HttpCookie authcookie = System.Web.Security.FormsAuthentication.GetAuthCookie(UserName, False);
authcookie.Domain = "parent.com";
HttpResponse.AppendCookie(authcookie);
HttpResponse.Redirect(System.Web.Security.FormsAuthentication.GetRedirectUrl(UserName,
False));
Да, конечно. Вам, возможно, понадобится к самокрутке на некоторых этапах, но это должно быть выполнимо.
Одна идея: поскольку Вы перенаправляете их через границу, даете им одноразовый маркер передачи и затем говорите субдомену получения ожидать их (этот пользователь, от этого IP, с этим маркером).
В качестве примечания я обнаружил, что после использования метода jro, который хорошо работал +1, метод FormsAuthenication.SignOut () не работал при вызове из поддомена, отличного от www /. (Я предполагаю, потому что свойство .Domain не совпадает) - Чтобы обойти это, я использовал:
if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
{
HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
myCookie.Domain = "parent.com";
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}