Есть несколько проблем, но ничего особенного. Кажется, что все изменения должны быть сделаны в select_living_room
.
select_living_room
принимает объект context
в своих аргументах, но затем первое, что он делает, это создает совершенно новый webDriver
, Но затем получает доступ к совершенно другому webDriver
, который является членом context
. Я предполагаю, что вы пытаетесь сделать одно из следующих действий: - accept
context
, в который уже включен драйвер. Если это так, избавьтесь от этого: driver = webdriver.Chrome()
- создайте новый драйвер в качестве атрибута
context
. В этом случае измените на: context.driver = webdriver.Chrome()
- В любом случае, я не вижу нигде, где
get
вызывается в драйвере для открытия страницы. В select_living_room
необходимо набрать open_website
. ActionChain
не работает. Необходимо добавить perform()
вызов в конце.
Я изменяю select_living_room
, чтобы работать так (предполагается, что webDriver
уже настроен внутри context
):
@when('Select Living Room')
def select_living_room(context):
open_website(context)
menu = context.driver.find_element(By.XPATH, "//*[@id='Container']/div[1]/div[3]/div[1]/a")
sofa = context.driver.find_element(By.XPATH, "//*[@id='Container']/div[1]/div[3]/div[1]/div/div[1]/ul/li[2]/a")
actions = ActionChains(context.driver)
actions.move_to_element(menu).move_to_element(sofa).click().perform()
Затем работает так:
opts = webdriver.ChromeOptions()
ctx = Context(webdriver.Chrome('path/to/chromedriver', options=opts))
select_living_room(ctx)
verify(ctx, None)
Обратите внимание, что вы не упоминаете, что такое Context
. Я заглушил это:
class Context:
def __init__(self, ctx):
self.driver = ctx