我正在尝试编写脚本来帮助我跟踪Fitbit社区,但是首先我需要登录该站点。原谅我,因为我是编码新手。我使用Selenium
在Python
。我的代码如下:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import re
##Loading selenium to handle java on leaderboard page
##
path_to_chromedriver = 'C:/python351/chromedriver/chromedriver.exe'
browser2 = webdriver.Chrome(executable_path = path_to_chromedriver)
##Login with selenium
##
login_url = 'https://www.fitbit.com/login'
browser2.get(login_url)
browser2.implicitly_wait(5)
email1 = browser2.find_element_by_name('email')
password1 = browser2.find_element_by_name('password')
email1.click()
email1.clear()
WebDriverWait(browser2, 10)
email1.send_keys('[email protected]')
WebDriverWait(browser2, 20)
password1.click()
password1.clear()
WebDriverWait(browser2, 20)
password1.send_keys('madeuppass')
WebDriverWait(browser2, 20)
form1 = browser2.find_element_by_class('common-btn common-btn-submit track-Auth-Login-ClickFitbit')
form1.submit()
当我运行它时,我不断收到以下错误,并且电子邮件/密码框没有填写。这是回溯:
C:\python351>python -i slogin.py
[WARNING:..\..\..\..\flash\platform\pepper\pep_module.cpp(63)] SANDBOXED
Vector smash protection is enabled.
Traceback (most recent call last):
File "slogin.py", line 28, in <module>
email1.click()
File "C:\python351\lib\site-packages\selenium\webdriver\remote\webelement.py",
line 74, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\python351\lib\site-packages\selenium\webdriver\remote\webelement.py",
line 457, in _execute
return self._parent.execute(command, params)
File "C:\python351\lib\site-packages\selenium\webdriver\remote\webdriver.py",
line 233, in execute
self.error_handler.check_response(response)
File "C:\python351\lib\site-packages\selenium\webdriver\remote\errorhandler.py
", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visi
ble
(Session info: chrome=50.0.2661.94)
(Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7
c4),platform=Windows NT 6.1 SP1 x86_64)
我已经摆弄了几个小时,但无法正常工作。我看到该元素看不见错误,这使我认为我需要延迟,但是后来我尝试实现它(可能效果很差),但仍然出现错误。我还添加了单击和清除的内容,并且在其他帖子中也看到了这些建议。我可以RoboBrowser
使用表单提交来登录,但是稍后需要访问的某些内容使用了Java,因此最终Selenium
陷入了僵局,现在我切换到了并被卡住了。
试试这个...
find_element_by_name无法找到该元素,因此您需要为其使用xpath。
path_to_chromedriver ='C:/python351/chromedriver/chromedriver.exe'browser2 = webdriver.Chrome(executable_path = path_to_chromedriver)
login_url =' https://www.fitbit.com/login '
browser2.get(login_url)
browser2.implicitly_wait(5)
email1 = browser2.find_element_by_xpath(“ .//*[@ id ='loginForm'] / fieldset / dl / dd [1] / input”)
email1.send_keys('[email protected]')
password1 = browser2.find_element_by_xpath(“ .//*[@ id ='loginForm'] / fieldset / dl / dd [2] / input”)
password1.send_keys('madeuppass')
形式1 = browser2.find_element_by_class('common-btn common-btn-submit track-Auth-Login-ClickFitbit')
form1.click()
#如果您需要更多帮助,请回复。我在Eclipse中使用Java语法运行了这段代码,效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句