我想在Python Selenium中学习 WINDOW 处理。
我的任务是:
首先打开' Google.com'。
第二次开放' Yahoo.com'在新窗口。
第三次切换回第一个窗口,然后点击Gmail链接。
第四步切换到第二个窗口,然后点击财务链接。
以下代码对我有用:
browser.get("http://www.google.co.in")
browser.execute_script("window.open('https://www.yahoo.com')")
browser.switch_to_window(browser.window_handles[0])
print(browser.title)
gmail=browser.find_element_by_class_name("gb_P")
gmail.click()
browser.switch_to_window(browser.window_handles[1])
print(browser.title)
fin=browser.find_element_by_link_text("Finance")
fin.click()
但是当我尝试将序列更改为任务时:
首先打开' Google.com'。
第二次开放' Yahoo.com'在新窗口。
第三个保留在同一窗口中,然后点击财务链接。
第四次切换到第一个窗口,然后点击Gmail链接。
以下已更改的任务代码,其中在新窗口中打开yahoo.com然后点击财务链接,然后切换到包含Google.com的主窗口,然后点击Gmail链接并不# 39;工作:
browser.get("http://www.google.co.in")
browser.execute_script("window.open('https://www.yahoo.com')")
browser.switch_to_window(browser.window_handles[1])
print(browser.title)
fin=browser.find_element_by_link_text("Finance")
fin.click()
browser.switch_to_window(browser.window_handles[0])
print(browser.title)
gmail=browser.find_element_by_class_name("gb_P")
gmail.click()
但是,如果我在切换到 Yahoo 标签后刷新页面,则此功能仅适用于 Chrome 驱动程序,而不适用于 Firefox < / strong>司机。
browser.get("http://www.google.co.in")
print(browser.current_window_handle)
browser.execute_script("window.open('https://www.yahoo.com')")
print(browser.current_window_handle)
WebDriverWait(browser, 10).until(EC.number_of_windows_to_be(2))
browser.switch_to_window(browser.window_handles[1])
print(browser.current_window_handle)
print(browser.title)
browser.refresh()
fin=browser.find_element_by_link_text("Finance")
fin.click()
print(browser.window_handles)
WebDriverWait(browser,10000)
browser.switch_to_window(browser.window_handles[0])
print(browser.title)
print(browser.current_window_handle)
gmail=browser.find_element_by_class_name("gb_P")
gmail.click()
答案 0 :(得分:0)
根据您更新的问题,关于标签/窗口切换/处理的几句话:
number_of_windows_to_be(num_windows)
以下是您自己的代码,上面提到了一些小调整:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#other lines of code
browser.get("http://www.google.co.in")
print("Initial Page Title is : %s" %browser.title)
windows_before = browser.current_window_handle
print("First Window Handle is : %s" %windows_before)
browser.execute_script("window.open('https://www.yahoo.com')")
WebDriverWait(browser, 10).until(EC.number_of_windows_to_be(2))
windows_after = browser.window_handles
new_window = [x for x in windows_after if x != windows_before][0]
browser.switch_to_window(new_window)
print("Page Title after Tab Switching is : %s" %browser.title)
print("Second Window Handle is : %s" %new_window)
控制台输出:
Initial Page Title is : Google
First Window Handle is : CDwindow-34D74AB1BB2F0A1A8B7426BF25B86F52
Page Title after Tab Switching is : Yahoo
Second Window Handle is : CDwindow-F3ABFEBE4907CFBB3CD09CEB75ED570E
浏览器快照:
现在您已经拥有了 Window Handles ,因此您可以轻松切换到任何 TAB 来执行任何操作。