Python-使用Selenium登录论坛
大家好…我正在尝试使用Selenium和PhantomJS进行无头浏览。这是登录论坛的一种方式 我要做的是,在FireFox中记录登录步骤,然后编辑它以适应PhantomJS,如下所示:Python-使用Selenium登录论坛,python,selenium,Python,Selenium,大家好…我正在尝试使用Selenium和PhantomJS进行无头浏览。这是登录论坛的一种方式 我要做的是,在FireFox中记录登录步骤,然后编辑它以适应PhantomJS,如下所示: driver = webdriver.PhantomJS() base_url = "http://6atxfootball.vbulletin.net/" verificationErrors = [] accept_next_alert = True driver.get(base_url) drive
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()
它失败了,问题就在这一行,错误是“NoTouchElementException:”等等
driver.find_element_by_id("idLoginUserName").clear()
这是否意味着由PhantomJS()打开时不存在这样的元素?或者说,这不是一种无头浏览的方式
谢谢
p、 所以我也尝试通过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,也就是说,
NoSuchElementException
意味着在该页面上找不到该元素。这可能意味着两件事:
你可以阅读更多关于这方面的内容。谢谢,塞巴斯蒂安。太棒了。但是我如何知道/找出真正的表单呢?如果你查看主页的源代码,你会看到iframe和它链接到的url。因此,您可以使用iframe的
src
属性,其id为idLoginIframe
,再次感谢Sébastien。这很有趣。除了iFrame,还有什么其他方式可以让网站具有“隐藏”表单?因为我也在查看,但在iFrame中找不到实际的登录页面。按ctrl+shift+I(或其他任何方式)在浏览器中启动开发工具。在“网络”选项卡上,显示在发布表单数据时发送的请求。你应该能从那里得到你需要的东西