当前位置: 首页 > 面试题库 >

Selenium所需功能-设置PhantomJS驱动程序的handlesAlerts

司空元凯
2023-03-14
问题内容

我正在尝试使用webdriver尝试phantomJS,但在处理JavaScript警报时遇到了麻烦。我注意到phantomjs驱动程序desired_capabilities有一个字段。'handlesAlerts': False 有没有办法将此值设置为true?我已经尝试了明显的方法,但是没有任何效果:

drv = webdriver.PhantomJS(desired_capabilities={'handlesAlerts': True})

print drv.desired_capabilities

{u'browserName': u'phantomjs',
 u'driverName': u'ghostdriver',
 u'driverVersion': u'1.0.3',
 u'handlesAlerts': False,
 u'javascriptEnabled': True,...}

我可以更改字典中的值drv.desired_capabilities['handlesAlerts'] = True,但是当我尝试切换到警报时,会收到错误消息。

$cat index.html 
<html>
<body>
<script type="text/javascript">
    alert('FOO!');
</script>
    Hello World.
</body>
</html>

>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.desired_capabilities['handlesAlerts'] = True
>>> driver.get('index.html')
>>> alert = driver.switch_to_alert()
>>> alert.text

Traceback (most recent call last):
<snip>
selenium.common.exceptions.WebDriverException: Message: 
   'Invalid Command Method -  Request    => 
                 {"headers":{"Accept":"application/json",
                              "Accept- Encoding":"identity",
                              "Connection":"close",
                              "Content-Type":"application/json;charset=UTF- 8",
                              "Host":"127.0.0.1:56009", 
                              "User-Agent":"Python- urllib/2.7"},
                  "httpVersion":"1.1",
                  "method":"GET",
                  "url":"/alert_text",
                  "urlParsed": {"anchor":"",
                                "query":"",
                                "file":"alert_text",
                                "directory":"/",
                                "path":"/alert_text",
                                "relative":"/ alert_text",
                                "port":"",
                                "host":"",
                                "password":"",
                                "user":"",
                                "userInfo":"",
                                "authority":"",
                                "protocol ":"",
                                "source":"/alert_text",
                                "queryKey":{},
                                "chunks":["alert_text"]},
                                "urlOriginal":"/session/cd31ed90-a5f8-11e2-856d-5783db9f5342/alert_text"}'

问题答案:

API指定了将所需功能传递给构造函数。但是,可能是驱动程序不支持所需功能中要求的功能。在这种情况下,驱动程序不会抛出任何错误,这是有意的。会话返回一个功能对象,该对象指示该会话实际支持的功能。

这就是这种情况下实际发生的情况。PhantomJS驱动程序不支持处理警报,如源代码中所示,返回的功能对象表明了很多。在大多数语言绑定中,此返回的功能对象是只读的。在返回的对象可能是读写的语言绑定中,修改这些功能对会话没有实际影响。在未完成的W3C
WebDriver规范中
,有一个requiredCapabilities设置,如果服务器无法提供该功能,则会抛出异常,但是据我所知,尚未由任何驱动程序实现。



 类似资料:
  • 我正在尝试使用Python Splinter Selenium PhantomJS进行基本测试,但我无法启动phantomjs浏览器。(Chrome 我得到一个错误: 此外,当我跑步时: 我基本上得到了同样的错误。 看起来PhantomJS正在使用远程驱动程序连接到远程服务器,但splinter没有启动selenium(?)PhantomJS要连接到的服务器。我不介意进入splinter(?)的源

  • 问题内容: 如何设置浏览器的屏幕尺寸?在设置PhantomJS之后,当我拍摄如下屏幕快照时,它仅显示400px宽的图像。 问题答案: 它应该与在其他任何浏览器中设置窗口大小相同,请看以下示例:如何使用Selenium WebDriver获取窗口大小,调整大小或最大化窗口 。 这是经过测试的代码对我有用:

  • 我正在使用Phantomjs驱动程序运行一个selenium webdriver脚本headless。我在上传文件时遇到了问题,因为在普通浏览器(firefox或chrome)上,它会弹出操作系统对话框,允许我在机器中找到文件并上传。如何使用ghostDriver(Phantomjs驱动程序)来实现这一点?谢谢

  • 我正在使用Selenium WebDrive,在Chrome浏览器中使用C#进行自动化。我需要检查我的网页是否被阻挡在某些地区(一些ip范围)。所以我必须在我的Chrome浏览器中设置一个代理。我尝试了下面的代码。代理正在设置,但我得到一个错误。有人能帮我吗? 运行此代码时,我在Chrome浏览器中收到以下消息:我试图启用代理选项,但“更改代理设置”选项被禁用。 *无法连接到代理服务器 代理服务器

  • 我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。

  • 嗨,我对硒很陌生。所以请原谅我的技术错误。我有一个适合IE的项目,但我也需要使用firefox进行测试。在IE中执行时,项目是否需要指向驱动程序(如IEDriver)的指针?