Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как навести курсор на объект не кликая на него


(Anton Karabeinikov) #1

Добрый день.
Кто-нибудь может подсказать, как навести на объект курсор ? Ситуация такая что при наведении на объект появляется кнопка Удалить…мне надо нажать на Удалить но она не появляется так как незнаю как навести на объект
public void DeleteNoteNewPerson() throws InterruptedException {
NavigateNoteDelBTN = getDriver().findElement(By.id(“noteBody”));
NavigateNoteDelBTN.click();
DelNoteBTN = getDriver().findElement(By.linkText(“Del”));
DelNoteBTN.click();

Только в третей строке у меня клика мне надо что б оно только навело курсор на id(“noteBody”)


(Руслан) #2

Такого рода не поможет?

@When("^I hover over menu item \"(.*)\"$")
public void I_hover_over_menu_item(String menuItem)
{
    WebDriver driver = getWebDriver();
    By by = By.xpath("//*[@pageid='" + menuItem + "']");
    Actions action = new Actions(driver);
    WebElement elem = driver.findElement(by);
    action.moveToElement(elem);
    action.perform();
    this.sleep(2);
}

public void sleep(int seconds) 
{
    try {
        Thread.sleep(seconds * 1000);
    } catch (InterruptedException e) {

    }
}

(rmerkushin) #3

Смотри метод moveToElement тут: http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/interactions/Actions.html#Actions(org.openqa.selenium.interactions.Keyboard,%20org.openqa.selenium.interactions.Mouse) :slight_smile:


(Anton Karabeinikov) #4

Спасибо. Помогло _)


(Anton Karabeinikov) #5

Заработало … спасибо)


(Anton Karabeinikov) #6

а может есть ещё какие-то варианты… этот тест не всегда проходит… после этой задержки он не всегда нажимает на ссылку linkText(“Del”)


(Руслан) #7

может элементы не успевает появится,

попробовать либо увиличить ожидание

либо сделать проверку :smile:

if (element(test).isPresented==true)
{
 element(test).click();
}
else
{
Thread.sleep(3000);
element(test).click();
}

(Anton Karabeinikov) #8

а “test” как мне правильно описать ?


(Руслан) #9
NavigateNoteDelBTN.click(); - это и есть element(test).click;

я просто к стилю для Фукидита привык :smile:


(Anton Karabeinikov) #10

что то не получается этим способом…((или я что-то опять не понимаю


(Anton Karabeinikov) #11

public void I_hover_over_menu_item()
{
WebDriver driver = getDriver();
By by = By.id(“noteBody”);
Actions action = new Actions(driver);
WebElement elem = driver.findElement(by);
action.moveToElement(elem);
action.perform();
this.sleep(2);
}
public void sleep(int seconds)
{
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {

    }
}

public void  DeleteNoteNewPerson() throws InterruptedException {
    DelNoteBTN = getDriver().findElement(By.linkText("Del"));
    By by = (By.linkText("Del"));
    WebElement elem = getDriver().findElement(by);
    if (DelNoteBTN.isPresented == true);
    {
       DelNoteBTN.click();
    }
    else
    {
        Thread.sleep(3000);
        DelNoteBTN.click();
    }

как мне связать два эти метода ? У меня isPresented светится красным


(vmaximv) #12

Не замарачивайтесь пока с этим, возможно проблема в другом. Для начала попробуйте увеличить задержку, поставьте например секунд 10.


(Руслан) #13

ну , я это предлагал, как 1 из вариантов

Если интересно, вот пример :

    if (driver.findElement(By.xpath("")).isDisplayed()==true)
    {
        driver.findElement(By.xpath("")).click();
    }
    else if (driver.findElement(By.xpath("")).isDisplayed()==false)
    {
        Thread.sleep(5000);
        driver.findElement(By.xpath("")).click();
    }

Попробуй так


(Максим Малунов) #14

Хорошая статья по теме
http://internetka.in.ua/selenium-driver-wait-until/

WebDriver driver = new FirefoxDriver();
(new WebDriverWait(driver, 10))
.until(ExpectedConditions.titleContains(“MyTitle”));


(Anton Karabeinikov) #15

я заметил что когда двигаю мышку в окне браузера в котором проходит тест, то тест не проходит потому что он не попадает по линку (By.linkText(“Del”));. Если же курсор находится за перделами браузера (или свернуть окно браузера)- тест проходит успешно. Реально ли это влияет или проблема в чём то другом ?


(vmaximv) #16

А почему нет? Не надо юлозить мышкой в браузере, когда идут тесты - особенно если в них есть манипуляции с мышью :slight_smile:


(Руслан) #17

полность солидарен :smile: случайное действие может не так восприниматься браузером :))


(Anton Karabeinikov) #18

Единственный выход это не трогать мышь )? других вариантов нет я так понимаю. !? )


(Руслан) #19

ты выполняешь mousehover , и в этом же время ты сам двигаешь мышкой, драйвер браузера реагирует на это, и там, где ты навёл курсором - то оно и видит, что первое словит - то и выполняет


(vmaximv) #20

Ну почему. Можно ранать на ВМ или другой машине. Или сворачивать браузер - но это не понравится ФФ и ИЕ.