我们能让Selenium专注于打开的浏览器窗口吗



我已经使用Selenium几年了。现在,我刚刚遇到了一个新的挑战/机遇。Selenium似乎总是想打开一个新窗口,据我所知,这是一个新实例,而这个新实例不知道我已经登录到了我想要登录的系统中。通常我会运行这样的通用代码。

import time
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Chrome('C:\Users\chromedriver.exe')
driver.get ('https://corp-login_place')
driver.find_element_by_id('USERID').send_keys('myid')
driver.find_element_by_id ('PASSWORD').send_keys('mypw')

list = [145, 270, 207]
for i in list:
driver.find_element_by_id('InputKeys_LOCATION').send_keys(i)

driver.find_element_by_class('PSPUSHBUTTON').click()
button = driver.find_element_by_class_name("Button")
button.click()
time.sleep(5)

所以,我认为自动化脚本应该可以工作,但当我运行代码时,它总是打开一个新的浏览器窗口,并要求我登录。此时,我的登录凭据不起作用。非常奇怪。不管怎样,我已经登录了,如果我只使用鼠标和键盘,一切都很好。打开的浏览器窗口似乎没有聚焦,但Selenium没有聚焦在打开的窗口上,它打开了一个新窗口,不允许我登录。

出于某种原因,当我按下F9时,代码不起作用,但如果我使用鼠标和键盘手动运行该过程,一切都会完全正常。这里发生了什么?

Selenium始终使用浏览器的新实例,无论您的系统中打开了多少其他浏览器窗口。如果您的问题与登录要测试的网站有关,请共享网站url
否则,如果您正在讨论附加系统中已经打开的浏览器窗口的会话,那么本文(http://tarunlalwani.com/post/reusing-existing-browser-session-selenium/)可能会有所帮助,尽管自动化的整个目的受到了损害。

相关内容

最新更新