Как открыть новое окно с помощью Robot framework, selenium?
На моей тестируемой странице есть ссылка, которая по умолчанию открывается в новой вкладке. Мне нужно открыть ссылку и проверить некоторые значения на только что открытой странице.
Как я обнаружил, selenium не поддерживает работу с вкладками, поэтому я пытаюсь открыть ссылку в новом окне, но она по-прежнему не работает..
Я реализовал функцию python для удержания клавиши SHIFT (я уже делал это раньше для CTRL, и она работает), а затем вызвал функцию "click", но ссылка все еще открывается в новой вкладке
from robot.libraries.BuiltIn import BuiltIn
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
class CustomSeleniumLibrary(object):
def __init__(self):
self.driver = None
self.library = None
self.ac = None
def get_library_instance(self):
if self.library is None:
self.library = BuiltIn().get_library_instance('ExtendedSelenium2Library')
return self.library
def get_action_chain(self):
if self.ac is None:
self.ac = ActionChains(self.get_library_instance()._current_browser())
return self.ac
def hold_shift(self):
actionChain = self.get_action_chain()
actionChain.key_down(Keys.SHIFT)
actionChain.perform()
Робот ключевое слово -
Open project detail
wait until element is visible ${LINK_TO_PROJECT}
${project}= get text ${LINK_TO_PROJECT}
hold shift
click element ${LINK_TO_PROJECT}
#sleep 2s
#release shift
element should contain //h3 Project Details: ${project}
Я перепробовал много вариантов со спящими, отпуская ключ и т. д. но он никогда не открывает ссылку в новом окне. Я также попытался проверить данные во вновь открытой вкладке (не пытаясь открыть в новом окне), но он всегда перенаправляется в исходную вкладку очень быстро, так что DOM на новой вкладке еще не загружен.. Спасибо за любое предложение!
1 ответ:
Вы можете использовать приведенный ниже код для обработки страницы, открытой в новой вкладке:
current = driver.current_window_handle driver.find_element_by_css_selector('a').click() # use own selector new_tab = [tab for tab in driver.window_handles if tab != current][0] driver.switch_to.window(new_tab) # do some actions driver.close() driver.switch_to.window(current)Также вы можете сделать небольшой хак (не рекомендуется, но...) чтобы избежать обработки новых вкладок и принудительно открыть ссылку в текущей вкладке:
link = driver.find_element_by_css_selector('a') driver.execute_script('arguments[0].target="_self";', link)
Comments