Нажмите после мыши

1

Dears Мне нужна помощь в этом коде

Во-первых: мне нужно, чтобы тестовый пример прошел через оператор if, когда

driver.findElement(By.id("login:popupPanel-tr")).isDisplayed());

id отображаемый для запуска условия, и если не завершить тестовый пример без условия if

Во-вторых: мне нужно щелкнуть элемент

driver.findElement(By.id("home:regNew")).click();

После действия мыши, когда я делаю это сейчас, он не нажимает и тестовый пример не работает

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;
import java.sql.*;

driver.findElement(By.id("login:username")).clear();
driver.findElement(By.id("login:username")).sendKeys("sarasf");
driver.findElement(By.id("login:password")).clear();
driver.findElement(By.id("login:password")).sendKeys("P@ssw0rd");
driver.findElement(By.id("login:login")).click();

if (driver.findElement(By.id("login:popupPanel-tr")).isDisplayed()) {
    driver.findElement(By.id("login:j_id54")).click();
    Thread.sleep(3000);
    driver.findElement(By.id("login:username")).clear();
    driver.findElement(By.id("login:username")).sendKeys("abasiouny_shop");
    Thread.sleep(1000);
    driver.findElement(By.id("login:password")).clear();
    driver.findElement(By.id("login:password")).sendKeys("passw0rd");
    Thread.sleep(1000);
    driver.findElement(By.id("login:login")).click();
    Thread.sleep(30000);
    Actions action = new Actions(driver);
    WebElement subElement =  driver.findElement(By.cssSelector("p.service"));
    action.moveToElement(subElement);
    action.click();
    action.perform();
    Thread.sleep(2000);   
    assertEquals("جديد",    driver.findElement(By.id("home:regNew")).getText());
}else{
    Thread.sleep(30000);
    Thread.sleep(2000);
    Actions action = new Actions(driver);
    WebElement element = driver.findElement(By.cssSelector("p.service"));   action.moveToElement(element).moveToElement(driver.findElement(By.cssSelector    ("p.service"))).build().perform();
    Thread.sleep(2000);
    driver.findElement(By.id("home:regNew")).click();
}
  • 0
    Почему вы используете слишком много thread.sleep ()? Это не лучшая практика и убийца для вашего теста производительности. Selenium предоставляет explicit и implicit ожидания для обработки подобных ситуаций.
  • 0
    требуется дождаться загрузки страницы
Показать ещё 1 комментарий
Теги:
selenium-webdriver

1 ответ

0
Лучший ответ

1) что мешает вам делать это?

if(driver.findElement(By.id("login:popupPanel-tr")).isDisplayed())
{//condition
}

2) Вы говорите, что после наведения мыши появляется элемент, по которому вам нужно щелкнуть? В этом случае вам нужно использовать Action class mouseOver API, а затем выполнить щелчок по элементу. Позвольте мне знать, если это помогает.

  • 0
    1) когда я выполняю условие if, как упомянуто в коде, оно работает нормально, если браузер находит это всплывающее окно, но когда оно не отображается, тестовый пример не проходит, я имею в виду, что он не переходит к другому {} 2) Это именно то, что мне нужно поэтому я ценю вашу помощь
  • 0
    ооо. Теперь я понял ... ну, вам придется сделать либо Try / Catch, либо ExpectedConditions.elementTobeClickable (By). В ExpectedConditions есть много вариантов, вы можете выбрать любой, который подходит вам с внешним ожиданием (WebDriverWait). как прошел ваш второй запрос? где вы можете пройти через класс действий
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню