Python - 使用Selenium登录论坛

时间:2014-10-23 08:06:42

标签: python selenium

大家好......我正在尝试使用Selenium和PhantomJS进行无头浏览。这是登录论坛。

我所做的是,记录FireFox中的登录步骤,然后编辑它以适合PhantomJS,如下所示:

driver = webdriver.PhantomJS()
base_url = "http://6atxfootball.vbulletin.net/"
verificationErrors = []
accept_next_alert = True

driver.get(base_url)

driver.find_element_by_id("lnkLoginSignupMenu").click()
driver.find_element_by_id("idLoginUserName").clear()
driver.find_element_by_id("idLoginUserName").send_keys("USERNAME_HERE")
driver.find_element_by_id("idLoginPassword").clear()
driver.find_element_by_id("idLoginPassword").send_keys("PASSWORD_HERE ")
driver.find_element_by_id("idLoginBtn").click()

它失败了,问题出在这一行,错误是“NoSuchElementException:”等。

driver.find_element_by_id("idLoginUserName").clear()

这是否意味着当它被PhantomJS()打开时没有这样的元素?或者在坚果壳中,这不是无头浏览的方式吗?

感谢。

P.S。所以我试图通过PhantomJS()将内容保存为文件,看看发生了什么:

driver = webdriver.PhantomJS()
base_url = "http://6atxfootball.vbulletin.net/"
verificationErrors = []
accept_next_alert = True

driver.get(base_url)
content=driver.page_source
cleaner=clean.Cleaner()
content=cleaner.clean_html(content)    

with open('6atxfootball.html','w') as f:
   f.write(content.encode('utf-8'))
   doc=LH.fromstring(content)

“6atxfootball.html”显示没有任何表格可以填写。

2 个答案:

答案 0 :(得分:0)

我猜它是因为它实际上在iframe中,所以PhantomJS在找到你的元素时遇到一些困难就不足为奇了。您应该尝试直接登录iframe的网址,即http://6atxfootball.vbulletin.net/auth/login-form

答案 1 :(得分:0)

NoSuchElementException表示该页面上未找到该元素。这可能意味着两件事:

  1. 页面上确实没有这样的元素
  2. 页面仍在加载,您过早检查
  3. 很多时候,主页面会加载但部分加载需要更长的时间。 避免这种情况的方法是设置适当的超时。同样,您有两个选择:

    1. 明确等待 - 在您继续进行代码之前定义等待某个条件发生的位置。
    2. 隐式方法 - 告诉WebDriver在尝试查找一个或多个元素时,如果它们不能立即可用,则会在一定时间内轮询DOM。
    3. 您可以详细了解here