2016-09-10 2 views
1

Я хочу войти в систему this website используя селен. Поэтому я импортировал веб-драйвер и для отправки информации для входа на эту страницу я также импортировал ключи.слом содержание с использованием селена не работает

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

Это я использовал для подготовки селена,

chromedriver = "chromedriver.exe" 
browser = webdriver.Chrome(chromedriver) 
browser.get("https://m.adidas.com/us/myaccount-create-or-login") 

Я сделал браузер ждать, пока загрузится страница не используя «неявно ждать функций»

Столбец имени пользователя на сайте имеет содержание HTML, как это,

<input type="text" value="" placeholder="* EMAIL" data-placeholder="* Email" maxlength="50" class="textinput required trimspace" name="username" id="username">

И пароль имеет

<input type="password" placeholder="* PASSWORD" data-placeholder="* Password" maxlength="50" autocomplete="off" name="password" value="" class="textinputpw required" id="password">

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

username1 = browser.find_element_by_id("username") 
password1 = browser.find_element_by_id("password") 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 
password1.send_keys(password.get()) 

Но приведенный выше код не отправляет информацию, я не знаю, почему это так? Не могли бы вы мне помочь?

Я попытался отправить ключи, используя также путь x. Распечатанный источник страницы, чтобы проверить сайт, выдает ошибку 403 Access denied, но это не в моем случае.

Я новичок в этом любезно голое если что-то неправильно

EDIT: - Мой Try:

username1 = browser.find_element_by_id("username") 
browser.switch_to.frame(username1) 
password1 = browser.find_element_by_id("password") 
browser.switch_to.frame(password1) 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 
password1.send_keys(password.get()) 

ответ

1

Элементы, которые вы пытаетесь достичь находятся внутри IFRAME.

<iframe id="loginaccountframe" class="sso-iframe" src="https://cp.adidas.com/web/eCom/en_US/loadsignin?target=account" frameborder="0" scrolling="no"></iframe> 

Вам нужно будет переключиться в IFRAME, прежде чем вы сможете их увидеть.

http://selenium-python.readthedocs.io/navigating.html#moving-between-windows-and-frames

+0

Я попытался добавить browser.switch_to.frame (USERNAME1) после идентификатора (я refrred другого satck переполнения ответа и что ALoS печатает элемент не найден исключение не могли бы вы объяснить больше. Я также упоминал это учебное пособие. Я новичок, любезно помогу мне – abcdef

+0

Вы не упомянули, что пытались переключиться на фрейм. Это важная деталь. Лучший способ получить помощь - объяснить, что все, что вы пробовали, и предоставили код, который вы использовали, и каким был результат. Я просто попробовал просто переключиться на iframe и ввести адрес электронной почты и пароль, и все получилось просто отлично. Попробуйте еще раз, и если это не сработает, отправьте сообщение код, который вы пытались (в своем вопросе), и каков был результат ... исключение сообщение и т. д. – JeffC

+0

Не могли бы вы разместить свой код, чтобы я мог видеть, что мне не хватает? (Я просил об этом, так как вы сказали, что он работает для вас). Я узнаю из вашего кодека. – abcdef

0

На самом деле @JeffC является правильным, есть iframe. Поэтому перед тем, как найти элемент внутри iframe, вы должны переключить его на iframe.

Как уже упоминалось в комментарии, как: -

Я попытался добавить browser.switch_to.frame (username1)

Вы на самом деле переключения username1 элемент предположив iframe элемент, который неправильно.

Вы должны найти элемент iframe отдельно как другой элемент, который вы пытаетесь найти, а затем переключиться на этот элемент iframe.Но здесь вы можете переключиться на iframe, используя его id, как показано ниже: -

browser.switch_to.frame("loginaccountframe") 

#now do your login stuff inside iframe 
username1 = browser.find_element_by_id("username") 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 

password1 = browser.find_element_by_id("password") 
password1.send_keys(password.get()) 

#now after doing all stuff inside iframe you need to switch back to default content for further steps 
browser.switch_to.default_content() 
Смежные вопросы