„Element nie jest obecnie widoczny, więc nie można z nim wchodzić w interakcje”, ale inny jest?
Stworzyłem kolejne pytanie, które wydaje mi się przyczyną tego błędu:Dlaczego sterownik Selenium Firefox uważa, że mój modal nie jest wyświetlany, gdy rodzic ma przepełnienie: ukryty?
Selenium wersja 2.33.0
Sterownik Firefox
Kod powodujący błąd:
System.Threading.Thread.Sleep(5000);
var dimentions = driver.Manage().Window.Size;
var field = driver.FindElement(By.Id("addEmployees-password")); //displayed is true
field.Click(); //works fine
var element = driver.FindElement(By.Id(buttonName)); //displayed is false
element.Click(); //errors out
Przycisk, który próbuje kliknąć:
<div id="addEmployees" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="addEmployeesLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>Add Employee</h3>
</div>
<div class="modal-body">
<p class="alert alert-info">
<input name="addEmployees-username" id="addEmployees-username" />
<input name="addEmployees-password" id="addEmployees-password" type="password" />
<input name="addEmployees-employee" id="addEmployees-employee" />
</p>
</div>
<div class="modal-footer">
<button name="addEmployees-add" id="addEmployees-add" type="button" class="btn" data-ng-click="submit()">Add</button>
</div>
</div>
Jeśli zmienię połączenie naFindElements
wtedy dostaję JEDEN element, więc na stronie nie ma niczego innego.Jeśli jaFindElement
powiedzmy na polu, które występuje tuż przed przyciskiemaddEmployees-employee
, następnieaddEmployees-employee
jestdisplayed
W samej przeglądarce wyświetla się dobrze, wystarczy kliknąć przycisk, a pożądane zachowanie zostanie wykonane, ale webdriver odmawia uwzględnienia wyświetlanego elementuJak to możliwe, że jedno pole można uznać za wyświetlone, a drugie nie?
Modal z przyciskiem dodawania w prawym dolnym rogu, wszystkie pozostałe elementy są wyświetlane = prawda
Rozmiar okna wynosi 1200x645 nadriver.Manage().Window.Size;
Lokalizacja elementu wynosi: 800x355y nadriver.FindElement(By.Id(buttonName)).Location
Wymiary elementów to: 51x30 nadriver.FindElement(By.Id(buttonName)).Size
Lokalizacja elementu hasła: 552x233y nadriver.FindElement(By.Id("addEmployees-password")).Size