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"显示没有任何表格需要填写。

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

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

  1. 页面上真的没有这样的元素
  2. 页面仍在加载,您检查得太早

很多时候,主页面会被加载,但加载其中的部分内容需要更长的时间。避免这种情况的方法是设置适当的超时。同样,你有两个选项:

  1. 显式等待-定义为在代码中继续执行之前等待某个条件发生
  2. 隐式方法-告诉WebDriver在试图查找一个或多个元素时轮询DOM一段时间(如果这些元素不能立即可用)

你可以在这里阅读更多。

最新更新