Я пишу несколько тестов на Python / Selenium и пытаюсь проверить систему выпадающего меню.Когда вы наведите курсор мыши на один из элементов верхнего меню, он отобразит элементы подменю под ним, позволяя тестовому коду щелкнуть подменю.
Проблема, с которой я сталкиваюсь, заключается в том, что я могунаведите курсор мыши на верхний пункт меню, и он правильно откроет подменю, но если я попытаюсь открыть то же самое верхнее меню, чтобы выбрать следующий пункт подменю, тогда функция hover_over_menu_item ничего не делает, ошибок нетно он не открывает элемент верхнего меню.
Но если я сначала наведу указатель мыши на другой элемент верхнего меню, чтобы он отобразил это подменю, то я могу навести курсор мыши на исходное главное меню, и оно откроется правильно.
HTML:
# The HTML looks like:
<div class="desktop-navbar">
<dropdown class="nav-bar-item "> <---First top level menu item
<label class=”animate” for=”0menu"
<ul class=”animate” for=”0menu”> <--- List of sub menu's
<dropdown class="nav-bar-item "> <---Second top level menu item
<dropdown class="nav-bar-item "> <---Third top level menu item
Код:
def open_top_menu(top_menu_name)
# Retrieve an array of the Web Elements that make up the top menu
css = '.nav-bar-item'
we_menu_array = driver.find_elements(By.CSS_SELECTOR, css)
# I then scan through this array looking for the Menu name
# I require and after I have found the correct top menu
# item, I mouse over it to expand the sub-menu:
count = len(we_menu_array)
for i in range(0, count):
menu_name = we_menu_array[i].text.strip()
if menu_name.upper() == top_menu_name.upper():
hover_over_menu_item(we_array[i])
result = True
break
return result
def hover_over_menu_item(we):
action = ActionChains(driver)
action.move_to_element(we)
action.perform()