[英]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.