2015-05-07 3 views
1

На веб-странице Я тестирую модальность, которая появляется после нажатия кнопки примерно на 5 секунд.Selenium как сделать нажатие и удерживать кнопку

И теперь я пытаюсь сделать это в selenium. У меня есть метод, как это:

public static void ClickHold(IWebElement by) 
{ 
    SpecialInteractions.ClickAndHold(by); 
} 

где

public static Actions SpecialInteractions { get; set; } 

и нет времени удержания для установки.

Похоже, вы просто щелкаете и отпускаете. Есть ли способ подождать определенное количество времени и затем отпустить?

+0

Если оно включено, вы можете сделать это как наведение на элемент, а затем использовать thread.sleep() для определенных секунд. –

+0

К сожалению, это не на ходу. Пользователь должен щелкнуть и удерживать. – szpic

+0

при щелчке по смену страницы? –

ответ

1

Без копания ковша я могу сказать вам, что программа выше, вероятно, возвращает NulReference exception. Я подозреваю, что вам нужно создать экземпляр Actions, обернув текущий экземпляр драйвера.

Возможное решение может быть:

public void ClickHold(IWebElement element) 
{ 
    Actions action = new Actions(driver); 
    action.clickAndHold(webelement).build().perform(); 
    //you need to release the control from the test 
    //actions.MoveToElement(element).Release(); 
} 
+0

Я очень сердитый, я наклеил слишком мало. Разумеется, действия с драйвером исполняются. Нет исключения NullPointerException. Этот код просто удерживается и освобождается сразу после того, как нет времени для установки – szpic

+0

Пробовали ли вы использовать некоторый сон после удержания, а затем метод 'Release()'? – Saifur

+0

@Anonymous_downvoter Просьба указать причину понижения. И, укажите, что я делаю неправильно или нет – Saifur

0

Имейте в виду, что это не будет работать, если вы используете Selenium Grid. Существует ошибка, которая делает moveToElement непризнанной командой.

public static Boolean moveToThenSlowClickElement(final WebDriver driver, final WebElement toElement, final int millisecondsOfWaitTime) { 
     final Actions clickOnElementAndHold = new Actions(driver); 
     final Actions release = new Actions(driver); 
     clickOnElementAndHold.moveToElement(toElement).clickAndHold(toElement).perform(); 

     sleep(millisecondsOfWaitTime); 

     release.release(toElement).perform(); 

     final Action hoverOverCheckBox = clickOnElementAndHold.build(); 
     hoverOverCheckBox.perform(); 

     return true; 
    } 
Смежные вопросы