Python 3.x Selenium Python:execute_脚本在循环中只执行一次
我想在不关闭浏览器的情况下执行以下任务3次。 在选项卡中打开Google.com。 打开新选项卡 然后关闭包含Google.com的标签 在上一个新打开的选项卡中打开Google.com 我正在使用以下代码打开新选项卡:Python 3.x Selenium Python:execute_脚本在循环中只执行一次,python-3.x,selenium,selenium-webdriver,automation,selenium-chromedriver,Python 3.x,Selenium,Selenium Webdriver,Automation,Selenium Chromedriver,我想在不关闭浏览器的情况下执行以下任务3次。 在选项卡中打开Google.com。 打开新选项卡 然后关闭包含Google.com的标签 在上一个新打开的选项卡中打开Google.com 我正在使用以下代码打开新选项卡: browser.execute_script("window.open('', 'new_tab')") 但在循环中执行时,它只执行一次 我已经打印了大量的窗口句柄,这表明execute_脚本只执行一次 我的完整代码: cpath="C:/Users/Gupta Niwas/
browser.execute_script("window.open('', 'new_tab')")
但在循环中执行时,它只执行一次
我已经打印了大量的窗口句柄,这表明execute_脚本只执行一次
我的完整代码:
cpath="C:/Users/Gupta Niwas/Downloads/Softwares/Browsers/Drivers/chromedriver_win32/chromedriver.exe"
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")
chrome_options.add_argument("start-maximized")
#browser = webdriver.Firefox(executable_path=fpath)
browser = webdriver.Chrome(chrome_options=chrome_options,executable_path=cpath)
for i in range(3):
browser.get("https://google.com")
print(len(browser.window_handles))
print("current:",browser.current_window_handle)
browser.execute_script("window.open('', 'new_tab')")
print(len(browser.window_handles))
next_tab=browser.window_handles[len(browser.window_handles)-1]
print(next_tab)
print(browser.title)
browser.close()
print(len(browser.window_handles))
browser.switch_to_window(next_tab)
browser.delete_all_cookies()
在第二个循环中,它抛出一个异常:
runfile('C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi/temp5.py',
wdir='C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi')
1
current: CDwindow-75E62D95A2A8A7808C5AC369A8070641
2
CDwindow-F1C8AFC0E5742A2E55CEA17FCD951D1D
Google
1
1
current: CDwindow-F1C8AFC0E5742A2E55CEA17FCD951D1D
1
CDwindow-F1C8AFC0E5742A2E55CEA17FCD951D1D
Google
Traceback (most recent call last):
File "<ipython-input-1-12046950abfa>", line 1, in <module>
runfile('C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi/temp5.py', wdir='C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi/temp5.py", line 34, in <module>
print(len(browser.window_handles))
File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 719, in window_handles
return self.execute(Command.GET_WINDOW_HANDLES)['value']
File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute
self.error_handler.check_response(response)
File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
WebDriverException: no such session
(Driver info: chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),platform=Windows NT 10.0.17134 x86_64)
runfile('C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi/temp5.py',
wdir='C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi')
1.
电流:CDwindow-75E62D95A2A8A7808C5AC369A8070641
2.
CDwindow-F1C8AFC0E5742A55CEA17FCD951D
谷歌
1.
1.
当前:CDwindow-F1C8AFC0E5742A2E55CEA17FCD951D
1.
CDwindow-F1C8AFC0E5742A55CEA17FCD951D
谷歌
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
runfile('C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi/temp5.py',wdir='C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi')
文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\utils\site\site customize.py”,第705行,在runfile中
execfile(文件名、命名空间)
文件“C:\ProgramData\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第102行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/Gupta Niwas/Downloads/Programming/Projects/Mi/temp5.py”,第34行,在
打印(len(浏览器窗口句柄))
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\webdriver.py”,第719行,在窗口句柄中
返回self.execute(Command.GET_WINDOW_HANDLES)['value']
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\webdriver.py”,执行中第314行
self.error\u handler.check\u响应(响应)
文件“C:\ProgramData\Anaconda3\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第242行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
WebDriverException:没有这样的会话
(驱动程序信息:chromedriver=2.40.565498(ea082db3280dd6843ebfb08a625e3eb905c4f5ab),平台=Windows NT 10.0.17134 x86_64)
我认为有一个问题:
next_tab = browser.window_handles[len(browser.window_handles)-1]
您的下一个\u选项卡将获取当前窗口引用。当您关闭当前窗口时:
browser.close()
无法切换到下一个选项卡,因为它不存在。我建议您调试您的代码,并找出您应该在浏览器中使用哪个值。窗口句柄[?]
我正在传递上一个选项卡的窗口句柄,即新创建的选项卡。如果您运行我的代码,我已经添加了打印语句来打印所需点的窗口数。然后您可以看到,在循环2中,窗口句柄的数量没有增加到2。如果您发布获得的完整输出,那就太好了,我现在无法执行代码。