我尝试使用Python3
,Selenium
和PhantomJS
登录Twitter。登录工作正常,但是当您在Twitter上使用tor时,Twitter会有第二个身份验证表单:在这种情况下,是与我的帐户关联的电话号码。
我可以选择手机输入标签,但我不能使用方法send_keys()
。
这是代码:
from selenium import webdriver
userAgent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'
key = 'phantomjs.page.settings.userAgent'
webdriver.DesiredCapabilities.PHANTOMJS[key] = userAgent
# use Tor
service = [
'--proxy=127.0.0.1:' + '9050',
'--proxy-type=socks5',]
browser = webdriver.PhantomJS(service_args=service)
# Go to login
browser.get('https://twitter.com/login')
# Fill the login
fieldset = browser.find_element_by_tag_name('fieldset')
# Fill the username
input_username = fieldset.find_element_by_name('session[username_or_email]')
input_username.send_keys('your_user')
# Fill with the password
input_password = fieldset.find_element_by_name('session[password]')
input_password.send_keys('password')
# Summit
form = browser.find_element_by_class_name('js-signin')
button = form.find_element_by_tag_name('button')
button.click()
browser.save_screenshot('login.png')
# Find the phone input
phone = browser.find_element_by_id('challenge_response')
phone.send_keys('111222333')
尝试send_keys()
WebDriverException: Message: TypeError - undefined is not a function (evaluating '_getTagName(currWindow).toLowerCase()')
为什么我有这个错误?我不能执行javascript代码(我想它一定是出于同样的原因)。
我使用Python 3.5.2
,Selenium 3.3.1
和PhantomJS 2.1