如何在splinter webdriver python中切换到窗口或选项卡?

问题描述 投票:2回答:1

我是python和splinter的新手。我阅读了有关splinter的文档,但没有像硒库中提到关于switch_to的任何内容。

当我运行此代码时,我得到一个错误。

  from splinter import Browser

  browser = Browser("firefox")
  browser.visit('http://google.com')
  window1 = browser.windows[0] #google
  browser.execute_script("window.open('https://www.amazon.com/');")
  window2 = window1.next #amazon active window
  browser.driver.switch_to.window(window1) #switch back to google

文档-http://splinter.readthedocs.io/en/latest/browser.html

错误:

追踪(最近通话):文件“ /Users/Splinter/switch_tabs.py”,第13行,在browser.driver.switch_to.window(window1)文件>“ / Library / Frameworks / Python.framework / Versions / 2.7 / lib / python2.7 / site-packages / selenium / webdriver / remote / switch_to.py”,第112行,在窗口中self._w3c_window(window_name)_w3c_window中的文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/switch_to.py”,第123行send_handle(窗口名)send_handle中的第119行的文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/switch_to.py”self._driver.execute(Command.SWITCH_TO_WINDOW,{'handle':h})执行中的文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py”,第310行响应= self.command_executor.execute(driver_command,params)执行中的文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py”,行464数据= ut​​ils.dump_json(参数)dump_json中的文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/utils.py”,第34行返回json.dumps(json_struct)转储中的文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py”,行244返回_default_encoder.encode(obj)文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py”,第207行,编码块= self.iterencode(o,_one_shot = True)文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py”,第270行,以iterencode返回_iterencode(o,0)默认情况下,文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py”,第184行引发TypeError(repr(o)+“不可JSON序列化”)TypeError:https://www.google.com.ph/?gfe_rd=cr&dcr=0&ei=iiSMWoGqDO2tX4q9gbgP&gws_rd=ssl>不能序列化JSON[完成于93.137秒]林特严重级别提供程序描述行

欢迎提出任何想法。谢谢!

python selenium selenium-webdriver web-testing splinter
1个回答
0
投票

尝试一下(有效):

# Get parent window
 parent_window = self.browser.driver.current_window_handle
# Open new page in child window
self.browser.driver.execute_script("window.open('http://google.com')")
 # Get list of all windows currently opened (parent + child)
 all_windows = self.browser.driver.window_handles
 # Get child window
 child_window = [window for window in all_windows if window != parent_window][0]
 # Switch to child window
 self.browser.driver.switch_to.window(child_window)
 # Close child window
 self.browser.driver.close()
 # Return to parent window
 self.browser.driver.switch_to.window(parent_window)
© www.soinside.com 2019 - 2024. All rights reserved.