为每次迭代打开新窗口,Selenium

时间:2017-06-06 05:01:03

标签: python windows selenium iteration

我正在尝试遍历字符串坐标列表以导航到特定的Google地球网页。我希望打开一个新窗口,并且每次迭代都关闭前一个窗口,并且还需要切换到新窗口。我不确定如何让Selenium在每次迭代时打开一个新窗口,有人可以解释一下如何做到这一点吗?

现在,如果我循环遍历这些坐标,第二次迭代将被引导到另一个页面并让我进入一种无限循环,但是当窗口最初打开时似乎工作正常,因此我想打开多个窗口。

感谢您的帮助。

```

width, height = get_screen_res()
driver = webdriver.Chrome()
driver.set_window_size(width, height)
driver.maximize_window()
driver.switch_to_window(driver.window_handles[0])


for i, c in enumerate(coordinates):
    filepath = '../images/Jafay/' + str(i) + '.png'
    lat, lon = c.split(',')
    url = 'http://earth.google.com/web/@{},{},1615.83371101a,196.41606213d,35y,0h,0t,0r'.format(lat, lon)
    driver.get(url)
    time.sleep(30)
    driver.save_screenshot(filepath)
    driver.close()

1 个答案:

答案 0 :(得分:0)

问题出在最后一行。不要在循环中使用driver.close(),在完成脚本时使用它。使用maximize_window()时也不需要设置屏幕尺寸,也不需要使用switch_to_window(),因为此时只有一个窗口

driver = webdriver.Chrome()
driver.maximize_window()

for i, c in enumerate(coordinates):
    filepath = '../images/Jafay/' + str(i) + '.png'
    lat, lon = c.split(',')
    url = 'http://earth.google.com/web/@{},{},1615.83371101a,196.41606213d,35y,0h,0t,0r'.format(lat, lon)
    driver.get(url)
    time.sleep(30)
    driver.save_screenshot(filepath)

driver.close()