2016-03-29 30 views
0

Bir düğmeyi tıklattığım bir senaryo var ve sonra yeni bir pencere açılır. Şimdi, açılan pencerede öğeleri bulamıyorum, bu yüzden yeni pencereye geçmeye çalışıyorum \ pop up.Pencereyi değiştirmeye çalışırken hata Selenium

_webdriver.SwitchTo().Window("0bd0568d-df1f-4472-b20b-842e03d412bd"); 

alıyorum hatadır:

: Aşağıdaki çalıştırarak pencere id bulduk

NoSuchWindowException : No Window Found

Bunu yaparken ama bir hata alıyorum denedi

foreach (string handle in _webdriver.WindowHandles) 
{ 
    string popup = _webdriver.SwitchTo().Window(handle).ToString(); 
} 

cevap

0

Pencereyi her açışınızda WindowHandle değiştirir, böylece bu şekilde belirtemezsiniz. Değiştirmek istediğiniz her defasında döngüyü kullanın.

Ayrıca, SwitchTo().Window(handle), pencere kimliği değil, IWebDriver örneğini döndürür. Bunun için driver.CurrentWindowHandle kullanın.

// get the current active window 
string parentHandle = driver.CurrentWindowHandle; 

// open new window 

// switch to the new window 
foreach (string handle in driver.WindowHandles) 
{ 
    if (!handle.Equals(parentHandle)) 
    { 
     driver.SwitchTo().Window(handle); 
    } 
} 
0

Pencere tanıtıcısı dize değeri, çalışma zamanında dinamik olarak oluşturulur ve bu nedenle, testinizi her çalıştırdığınızda farklı olur.

driver.CurrentWindowHandle ürününü driver.WindowHandles numaralı telefondan arayarak bir sonraki ürüne geçmelisiniz. Bu, Opera veya Android üzerinde test yaparken sorunlara neden olsa da.

bool bFound = false; 
foreach (string windowHandle in driver.WindowHandles) 
{ 
    if (bFound) 
    { 
     driver.SwitchTo().Window(windowHandle); 
     break; 
    } 
    bFound = windowHandle == driver.CurrentWindowHandle; 
} 
İlgili konular