2015-02-05 5 views
1

Dears мне нужна помощь в этом кодеНажмите после мыши над

Первое: мне нужно сделать тест пройти, если заявление, когда

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("[email protected]"); 
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» обеспечивает «явное» и «неявное» ожидание для обработки таких ситуаций. – Saifur

+0

требуется дождаться загрузки страницы –

+0

Использовать 'Driver.Manage(). Timeouts(). SetPageLoadTimeout (что-то)' – Saifur

ответ

0

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

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

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

+0

1) когда я выполняю условие if, как указано в коде, оно отлично работает, если браузер находит это всплывающее окно, но когда оно не отображается, тестовый случай не работает, я имею в виду, что он не переходит в другое {} 2) Это именно то, что мне нужно, поэтому я ценю вашу помощь –

+0

ohh. Теперь я получил его .. ну, вам придется делать либо Try/Catch, либо ExpectedConditions.elementTobeClickable (By). В ExpectedConditions есть много вариантов, вы можете выбрать любой, который вас устроит с внешними ожиданиями (WebDriverWait). как прошел ваш второй запрос? где вы можете пройти через класс «Действия» –

+0

Нет той же проблемы, он находит элемент «p.service» и накладывает на него курсор, но не может щелкнуть элемент, который появляется под ним. –

Смежные вопросы