我对selenium是新的,每当警报弹出时,我想拍警报框的截图。我编写的代码如下:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoAlertPresentException
import time
class SearchXSS(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
def test_search_in_python_org(self):
driver = self.driver
driver.get("http://testfire.net/")
ele = driver.find_element_by_name("txtSearch")
ele.send_keys("<script>alert(document.cookie)</script>")
ele.send_keys(Keys.RETURN)
try:
time.sleep(1)
alert = driver.switch_to_alert()
driver.get_screenshot_as_file('screenshot.png')
alert.accept()
except NoAlertPresentException as e:
print "no alert to accept "
fo.close()
def tearDown(self):
self.driver.quit()
if __name__=="__main__":
unittest.main()
我在拍摄截图时遇到了这个问题。错误信息如下所示
=======================================================================================================================================================================================================",第22行,在test_search_in_python_org driver.get_screenshot_as_file('screenshot.png')文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”中,第798行,在get_screenshot_as_file png=self.get_screenshot_as_file png=self.get_screenshot_as_png()文件“('ASCII'))
文件”/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py“,第827行,在get_screenshot_as_base64返回self.execute(command.screenshot)['value']文件”/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py“,第236行,在execute self.error_handler.check_response(响应)文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py”,第191行,在check_response中引发exception_class(消息,屏幕,stacktrace,value['aler'].get('text'))expectiontedalertpresentexception:Alert text:amsessionid=92632533494消息:意外模式对话框(文本:amsessionid=92632533494)stacktrace:at e.js:4745)位于(http://testfire.net/search.aspx?txtsearch=%3cscript%3ealer%28document.cookie%29%3c%2fscript%3e:80)
-----------------------------------------------------------------------------------------------------------------------------------------------------------
失败(错误=1)[在10.4s内完成,退出代码为1]
帮我解决这个问题。
您不能使用警报
框进行屏幕截图
,您需要首先处理警报
表示接受
或拒绝
然后进行屏幕截图,因为当selenium进行带有警报的屏幕截图时,它总是抛出ExpectiondalertPresentException
,因此不可能使用selenium
使用alert
框进行屏幕截图。因此,您需要如下所示:-
alert = driver.switch_to_alert()
alert.accept()
driver.get_screenshot_as_file('screenshot.png')
如果您想用alert
进行屏幕截图,您应该用其他库尝试一些不同的方法,在java中有robot
类,可以在这种情况下进行screenshot
,但我不确定在python中有什么等效的方法。
问题内容: 我正在尝试提取输入框中的文本, 我开始 我尝试了input.getText()但我得到了 问题答案: 使用它来获取输入元素的值:
它仍然无法工作,并且现在得到了timeoutException。
问题内容: 我为此进行了很多搜索,但找不到解决方案。这是java中可能的解决方案的类似问题。 Python中有类似的解决方案吗? 问题答案: 除了硒以外,此示例还需要PIL映像库。有时将其作为标准库之一放入,有时却不作为,但如果没有,则可以使用 最后输出是… Stackoverflow徽标!!! 当然,现在仅获取静态图像将是过大的选择,但是如果您想要获取需要Javascript才能实现的功能,那可
问题内容: 我想检测是否弹出警报。目前,我正在使用以下代码: 问题是,如果网页的当前状态没有警报,它将等待特定的时间,直到达到超时,然后引发异常,因此性能真的很差。 有没有更好的方法,也许可以将警报事件处理程序用于动态发生的警报? 问题答案: 这是使用“从此处进行显式等待”对我有用的WebDriver:高级用法
如何将以下警报转换为ESLint可接受的警报? 我的构建失败,因为显然我不能使用"警报"。我想在加载某个东西时调用此警报。此代码工作成功,但不符合ESLint。 http://eslint.org/docs/rules/no-alert 如何修改代码使其成功构建? 提前感谢:)
我正在编写一个Python(3.6.6)脚本,它使用Selenium(3.141.0)在Chrome(ChromeDriver版本77.0.3865.40)中打开一个网址,导航一系列菜单,在弹出窗口中输入登录详细信息并登录。这是我的剧本: 如果我手动执行此导航,我会得到一个提示,询问用户名和密码,并有两个按钮用于登录或取消。当Selenium执行此操作时,我看到提示闪烁,但随后很快消失,因此我得到