#python #splinter
#python #splinter
Вопрос:
Я играю с Splinter на странице регистрации yahoo. Что-то пошло не так, когда я пытаюсь заполнить имя пользователя yahoo. Ниже приведен код. Я почти уверен, что в следующем коде нет ничего плохого.
with Browser() as browser:
# Visit URL
url = "https://edit.yahoo.com/registration?.intl=usamp;.lang=en-USamp;.pd=ym_ver%3D0%26c%3D%26ivt%3D%26sg%3Damp;new=1amp;.done=http://mail.yahoo.comamp;.src=ymamp;.v=0amp;.u=3lt6ffl9q1g0mamp;partner=amp;.partner=amp;pkg=amp;stepid=amp;.p=amp;promo=amp;.last=amp;fsredirect=1amp;fs=uKhjpV.HafCCqUaFfpsAA6U3jii0wwSSblFjRz2HbaZq5sH_VJeVqejV5CUyegWCV3V2PxNx"
browser.visit(url)
browser.fill("yahooid","Zara")
Если я остановлю программу, браузер снова заработает.
Одно из моих предположений заключается в том, что он ожидает чего-то вроде предложений имени пользователя, поскольку он отлично работает с полями «имя» и «фамилия».
Я использую Windows 8, Eclipse, Splinter 0.6.0, Firefox 30.0
Играя с Splinter, есть другой метод, который я могу использовать для выполнения того же самого. Пока эта проблема не будет решена, люди с такой же проблемой могут использовать следующую концепцию.
with Browser() as browser:
# Visit URL
url = "https://edit.yahoo.com/registration?.intl=usamp;.lang=en-USamp;.pd=ym_ver%3D0%26c%3D%26ivt%3D%26sg%3Damp;new=1amp;.done=http://mail.yahoo.comamp;.src=ymamp;.v=0amp;.u=3lt6ffl9q1g0mamp;partner=amp;.partner=amp;pkg=amp;stepid=amp;.p=amp;promo=amp;.last=amp;fsredirect=1amp;fs=uKhjpV.HafCCqUaFfpsAA6U3jii0wwSSblFjRz2HbaZq5sH_VJeVqejV5CUyegWCV3V2PxNx"
browser.visit(url)
#browser.fill("yahooid","Zara")
browser.execute_script("document.getElementsByName('yahooid')[0].value='Zara'")
Комментарии:
1. Какие версии splinter и firefox вы используете?
2. splinter, который я использую, имеет версию 0.6.0, а firefox — версию 28.0
3. Помогает ли обновление до последней версии firefox (в настоящее время 30.0)?
4. Я только что обновил firefox до 30.0, и это не решает эту проблему.
5. Интересно, я использую те же инструменты на Mac — не удается воспроизвести проблему.