【发布时间】:2018-06-13 19:22:39
【问题描述】:
我想学习 Python Selenium 中的 WINDOW 处理。
我的任务是:
首先打开“Google.com”。
在新窗口中再次打开“Yahoo.com”。
第三次切换回第一个窗口并点击 Gmail 链接。
第四次切换到第二个窗口并点击Finance Link。
以下代码对我有用:
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”。
第三个留在同一窗口中,然后点击 Finance Link。
第四次切换到第一个窗口并点击Gmail链接。
下面的更改的任务代码,在新窗口中打开 yahoo.com,然后单击财务链接,然后切换到包含 Google.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[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 驱动程序。
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()
【问题讨论】:
-
你能把问题缩小到你到底在找什么吗?
-
@DebanjanB 为什么我的任务更改顺序的代码不起作用?
-
@DebanjanB 为什么改变任务序列的代码不起作用?
-
用 what doesn't works 更新问题,如
altered code for the task doesn't work -
@DebanjanB 我试图在编辑中解释。
标签: python-3.x selenium selenium-webdriver selenium-chromedriver geckodriver