我是Python的新手。我已经编写了一个代码来自动登录网站https://www.quora.com。问题是,selenium完美地加载了Firefox,但随后该程序不再继续。也就是说,它不会继续输入我的电子邮件和密码。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get('https://www.quora.com')
browser.implicitly_wait(30)
email = browser.find_element_by_class_name('email')
pw = browser.find_element_by_class_name('password')
email.send_keys('my_email')
pw.send_keys('my_password')
pw.send_keys(Keys.ENTER)
我已经编写了一个类似的程序来自动登录Gmail,这非常有效。下面给出了代码,尽管它与上面几乎完全相同。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get('https://www.gmail.com')
browser.implicitly_wait(10)
email = browser.find_element_by_id('Email')
email.send_keys('my_username')
email.send_keys(Keys.ENTER)
pw = browser.find_element_by_id('Passwd')
pw.send_keys('my_password')
pw.send_keys(Keys.ENTER)
两个程序都使用隐式等待方法,即程序等待指定的页面加载时间间隔,然后抛出异常。
我还尝试了selenium文档http://selenium-python.readthedocs.org/waits.html中提到的显式等待方法。 Gmail登录也可以使用该方法,但Quora登录不会。
为什么会这样?我该如何解决?
答案 0 :(得分:1)
虽然Shubham Jain的答案还可以,但Quora经常更改他们的ID和课程。众所周知,它们难以刮擦或做任何事情。这是设计的。
因此,如果您打算对Quora进行任何拼抢(我会告知您这违反了他们的服务条款),我会尽量不要使用Classes或ID来定位他们网页上的任何内容!
如果我是你,我会尝试搜索不会像你想要的那样改变的东西!你实际上相当接近!
而不是:
email = browser.find_element_by_class_name('email')
待办事项
email = browser.find_element_by_name('email')
您会注意到您正在查看“class_name”,而您真正想要的只是“名称”。
您的密码也一样!
pw = browser.find_element_by_class_name('password')
待办事项
pw = browser.find_element_by_name('password')
有时候这些命名约定会让人感到困惑,我强烈建议您使用Xpath进行搜索。
答案 1 :(得分:0)
您输入电子邮件的ID不是# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
#processManagement:
security:
authorization: enabled
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
,而是Email
您输入密码的ID不是__w2_XYMxo3M_email
,而是Passwd
您的元素__w2_XYMxo3M_password
分别为name
和Email
字段
尝试使用它。