Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-使用Selenium登录论坛_Python_Selenium - Fatal编程技术网

Python-使用Selenium登录论坛

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

大家好…我正在尝试使用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()
它失败了,问题就在这一行,错误是“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
意味着在该页面上找不到该元素。这可能意味着两件事:

  • 页面上确实没有这样的元素
  • 页面仍在加载,您检查得太早
  • 很多时候,主页会加载,但加载部分主页会花费更长的时间。 避免这种情况的方法是设置适当的超时。同样,您有两个选项:

  • 显式等待-定义在代码中继续之前等待特定条件发生
  • 隐式方法-告诉WebDriver在试图查找一个或多个元素时,如果它们不立即可用,则在一定时间内轮询DOM

  • 你可以阅读更多关于这方面的内容。

    谢谢,塞巴斯蒂安。太棒了。但是我如何知道/找出真正的表单呢?如果你查看主页的源代码,你会看到iframe和它链接到的url。因此,您可以使用iframe的
    src
    属性,其id为
    idLoginIframe
    ,再次感谢Sébastien。这很有趣。除了iFrame,还有什么其他方式可以让网站具有“隐藏”表单?因为我也在查看,但在iFrame中找不到实际的登录页面。按ctrl+shift+I(或其他任何方式)在浏览器中启动开发工具。在“网络”选项卡上,显示在发布表单数据时发送的请求。你应该能从那里得到你需要的东西