2013-05-12 22 views
6

Selenium otomasyonunu deniyorum ve oturum açan, belirli bir sayfaya giden, veri girişi yapan ve sonra gönderen bir test çantası yazmaya çalışıyorum. Sorun, çalıştığı zaman, kimlik bilgilerini yazıyor, "Gönder" basımları site geri dönüyor:Selenium test işlemleri çerezleri kaydetmez mi?

Bu site yetkilendirme bilgilerini doğrulamak için HTTP çerezlerini kullanmaktadır. Lütfen devam etmek için HTTP çerezlerini etkinleştirin.

Ama sonra [// 1 ile gösterilir] bu satırı eklendiğinde: O [// 2 ile gösterilir] gönderme mesajı sayfasına gelene kadar giriş geçmesi için izin

driver.findElement(By.cssSelector("p > input[type=\"submit\"]")).click(); 

tekrar kimlik bilgilerini ister (hiç giriş yapılmamış gibi). Firefox hiç kurabiye kabul etmiyor mu? Bunu nasıl düzeltirim?

Kaynak: senin sorunun deyimi dayanarak

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.JUnitCore; 
import org.openqa.selenium.*; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import java.util.concurrent.TimeUnit; 

import static org.junit.Assert.assertEquals; 
import static org.junit.Assert.fail; 

public class LaPwn { 
    private WebDriver driver; 
    private String baseUrl; 
    private boolean acceptNextAlert = true; 
    private StringBuffer verificationErrors = new StringBuffer(); 
    private String UserID = ""; 
    private String UserPW = ""; 
    private String UserPIN = ""; 

    public static void main(String[] args) throws Exception { 

     UserInfo User = new UserInfo(); 

     User.setUserInfo(); 

     System.out.println(User.getUserID()); 
     System.out.println(User.getUserPW()); 
     System.out.println(User.getUserPIN()); 


     JUnitCore.main("LaPwn"); 
    } 

    @Before 
    public void setUp() throws Exception { 
     driver = new FirefoxDriver(); 
     baseUrl = "https://my_url.com"; 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
    } 

    @Test 
    public void testLaPwn() throws Exception { 
     driver.get(baseUrl + "/Login"); 
     //1 
     driver.findElement(By.cssSelector("p > input[type=\"submit\"]")).click(); 
     //1 
     driver.findElement(By.id("UserID")).clear(); 
     driver.findElement(By.id("UserID")).sendKeys("User.getUserID()"); 
     driver.findElement(By.name("PIN")).clear(); 
     driver.findElement(By.name("PIN")).sendKeys("User.getUserPW()"); 
     driver.findElement(By.cssSelector("p > input[type=\"submit\"]")).click(); 
     driver.findElement(By.id("apin_id")).sendKeys("User.getUserPIN()"); 
     driver.findElement(By.cssSelector("div.pagebodydiv > form > input[type=\"submit\"]")).click(); 

     //2 
     driver.get(baseUrl + "/messagecenter"); 
     //2 
     try { 
      assertEquals("Send message:", driver.getTitle()); 
     } catch (Error e) { 
      verificationErrors.append(e.toString()); 
     } 
     driver.findElement(By.id("user")).clear(); 
     driver.findElement(By.id("user")).sendKeys("test123"); 
     driver.findElement(By.id("messg")).clear(); 
     driver.findElement(By.id("messg")).sendKeys("Hello test123!"); 
     driver.findElement(By.xpath("(//input[@name='SEND_BTN'])[2]")).click(); 
    } 

    @After 
    public void tearDown() throws Exception { 
     driver.quit(); 
     String verificationErrorString = verificationErrors.toString(); 
     if (!"".equals(verificationErrorString)) { 
      fail(verificationErrorString); 
     } 
    } 

    private boolean isElementPresent(By by) { 
     try { 
      driver.findElement(by); 
      return true; 
     } catch (NoSuchElementException e) { 
      return false; 
     } 
    } 

    private boolean isAlertPresent() { 
     try { 
      driver.switchTo().alert(); 
      return true; 
     } catch (NoAlertPresentException e) { 
      return false; 
     } 
    } 

    private String closeAlertAndGetItsText() { 
     try { 
      Alert alert = driver.switchTo().alert(); 
      String alertText = alert.getText(); 
      if (acceptNextAlert) { 
       alert.accept(); 
      } else { 
       alert.dismiss(); 
      } 
      return alertText; 
     } finally { 
      acceptNextAlert = true; 
     } 
    } 
} 
+0

Biraz beklemeyi denediniz mi? – acdcjunior

cevap

8

, karşılaştığınız sorun selenyum çerezler etkin değil taze firefox profilini açarak olmasıdır.

driver = new FirefoxDriver(); Burada çerezlerin etkinleştirildiği bir profil açacak şekilde düzeltmeniz gereken yer burasıdır. Bir yol, FirefoxDriver();

ProfilesIni profileObj = new ProfilesIni(); 
FirefoxProfile yourFFProfile = profileObj.getProfile("your profile"); 
driver = new FirefoxDriver(yourFFProfile); 

Bu şekilde, bu profilde ihtiyacınız olan ayarları yapabilir ve testlerinizi bu ayarlar altında çalıştırabilirsiniz. Çerezleri etkinleştirmek gerekiyorsa, bunu firefox seçeneklerinde yapın.

ardından

Bu konu hakkında daha fazla bilgi için kaynağını kontrol edin seleniumhq.org

File profileDir = new File("path/to/top/level/of/profile"); 
FirefoxProfile profile = new FirefoxProfile(profileDir); 
profile.addAdditionalPreferences(extraPrefs); 
WebDriver driver = new FirefoxDriver(profile); 

göre belirli bir profili açmak için başka bir yoludur. Kaynak: http://docs.seleniumhq.org/docs/03_webdriver.jsp#modifying-the-firefox-profile

+0

Windows'ta profilleri görüntülemek/oluşturmak için firefox.exe dosyasını bulabilirsiniz. Firefox.exe'nin konumunda bir komut istemi açın ve profilleri yönetmek için küçük bir pencere açmak için firefox.exe -ProfileManager programını çalıştırın. İpucu: firefox genellikle "C: \ Program Files (x86) \ Mozilla Firefox \ firefox.exe" veya "C: \ Program Files \ Mozilla Firefox \ firefox.exe" içinde bulunur. Klasör açıkken, beyaz alana sağ tıklayın ve "burada komut penceresini aç" ı seçin. Buda'nın cevabında "profiliniz" adlı bir profil arar. – weezilla

1

Aslında ben

baseUrl = "https://my_url.com/"; 

olarak temel URL'sini tanımlanan gerçekleştirilen ve buna gibi birleştirerek edildi: "https://my_url.com//Login" için

driver.get(baseUrl + "/Login"); 

. Tekrar oynattığınız için teşekkürler!

+0

+1 teşekkürler - bu inanılmaz derecede basit, birkaç gün boyunca bunu çözmek için her şeyi denedim :) – msanjay

İlgili konular