簡體   English   中英

如何在 splinter webdriver python 中切換到窗口或選項卡?

[英]How to switch to window or tab in splinter webdriver python?

我是 python 和 splinter 的新手。 我閱讀了關於 splinter 的文檔,但它沒有提到 selenium 庫中關於 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", line 112, in window self._w3c_window(window_name) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2 .7/site-packages/selenium/webdriver/remote/switch_to.py”,第 123 行,在 _w3c_window send_handle(window_name) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- package/selenium/webdriver/remote/switch_to.py”,第 119 行,在 send_handle 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 行,在執行 response = self.command_executor.execute(driver_command, params) 文件“/Library/Frameworks/Python.framework/版本/2.7/lib/python2.7/site-packages/selenium/webdri ver/remote/remote_connection.py”,第 464 行,在執行數據 = utils.dump_json(params) 文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver /remote/utils.py”,第34行,在dump_json返回json.dumps(json_struct)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/ INIT py”為,線244 , 在轉儲中返回 _default_encoder.encode(obj) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode chunks = self.iterencode(o , _one_shot=True) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode return _iterencode(o, 0) File "/Library/ Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: https://www .google.com.ph/?gfe_rd=cr&dcr=0&ei=iiSMWoGqDO2tX4q9gbgP&gws_rd=ssl> 不是 JSON 可序列化的 [在 93.137s 中完成] Linter S everity 提供者描述行

歡迎任何想法。 謝謝!

試試這個(它的工作):

# 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM