【问题标题】:How to debug selenium webdriver with phantoms and basic http auth?如何使用幻象和基本 http auth 调试 selenium webdriver?
【发布时间】:2014-08-28 14:32:07
【问题描述】:

我正在尝试使用 selenium webdriver (python) 和 phantomJS 来自动化在特定网站上完成的一些无聊的管理工作。该网站具有基本的 http 身份验证机制。我运行以下代码,但我没有得到任何东西(即 screen.png 或标题中什么都没有)。当我使用 wget 使用相同的格式 (https://username:password@mywebsite.com) 进行连接时,它可以工作,并且我得到了应该在成功登录时显示的初始主页。我该如何调试这个.. 有没有办法打开详细程度,这样我就可以看到真正得到了什么。另请注意,不能选择使用 firefox 或任何其他 UI webdriver,因为我只想从防火墙内的 linux 机器上运行它。

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
import getpass

login = "myname"
password = getpass.getpass("Enter password")
password = password.replace("@","%40")
url = "https://%s:%s@mywebsite.com/"%(login,password)

print url

# Create a new instance of the Firefox driver
driver = webdriver.PhantomJS('./phantomjs/bin/phantomjs')

# go to the website 
driver.get(url)
driver.save_screenshot('screen.png')

# the page is ajaxy so the title is originally this:o

print driver.title
driver.set_window_size(1024, 768)
driver.get_screenshot_as_png()

谢谢

【问题讨论】:

  • 它是否导航到 url?如果没有,您是否尝试过使用driver.Navigate().GoToUrl(url)。看起来您在获取屏幕截图之前正在保存它...
  • 谢谢,我会试试的。顺便说一句,有没有办法在这个脚本中产生更详细的输出?
  • 您可以做的各种事情。 python 的打印非常适合调试,或者您可以在其中添加一个日志实用程序以附加到日志文件。真的取决于你想找到什么。
  • 这不是我想要的。如果您阅读原始问题,您会发现它在 selenium webdriver 调用中的某处失败。想看看里面发生了什么。
  • 好吧,我从来不用单步调试 webdriver 代码,但如果你需要,它是开源的。我建议您下载代码并将其直接包含在您的项目中,这样您就可以逐步调试它。

标签: python selenium phantomjs


【解决方案1】:

作为变体:

  • password.replace() 更改为urllib.quote(),因为密码中可能有多个@ 特殊符号。
  • 将 PhantomJS 驱动程序更改为 Firefox(或任何其他),您将看到您的 PC 上究竟会发生什么。
  • driver.get() 之后使用之前导入的 EC 来等待页面上的某些元素,并且仅在此之后 - 截屏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2016-03-01
    • 2017-10-24
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多