У меня есть тестовое приложение, которое отображает очень очень большую диаграмму Ганта.Большинство элементов не визуализируются до тех пор, пока не сработает событие прокрутки, и они необходимы (с использованием имен углов, классов и т. Д.).Мне нужно уметь двигаться во всех направлениях и делать утверждения об этих элементах.
Особой проблемой является проверка видимости.У меня есть следующее:
private Point AssessElementOutOfViewport()
{
var workingViewportMovement = new Point();
// Essentially the top right of our webpage should ALWAYS be 0,0
var currentViewportWidth = (int) driver.ExecuteJavaScript<long>("return window.innerWidth");
var currentViewportHeight = (int) driver.ExecuteJavaScript<long>("return window.innerHeight");
if (element.Location.X > currentViewportWidth | element.Location.X < 0)
{
workingViewportMovement.X = element.Location.X - currentViewportWidth;
if (workingViewportMovement.X < 20 && workingViewportMovement.X > 0)
{
workingViewportMovement.X = 20;
}
}
if (element.Location.Y > currentViewportHeight | element.Location.Y < 0)
{
workingViewportMovement.Y = element.Location.Y - currentViewportHeight;
if (workingViewportMovement.Y < 150 && workingViewportMovement.Y > 0)
{
workingViewportMovement.Y = 150;
}
}
return workingViewportMovement;
}
Это просто недостаточно хорошо.Работает только тогда, когда страница находится в состоянии по умолчанию.После того, как я переместил страницу при первой проверке, следующий элемент захочет переместиться на сумму, которая не является жизнеспособной, и после одной целой страницы он переместит страницу на целую страницу, и элемент все равно не будет виден.
Пока что я могу обойтись без вышеизложенного, НО, я стремлюсь не изобретать велосипед.
Это, безусловно, ДОЛЖНО уже иметь дело?
Я тут покопался, документация WebDriver / ChromeDriver / Selecnium и не нашла никаких свойств или методов, которые бы помогали отслеживать «смещение», через которое манипулировали область просмотра с течением времени / с момента загрузки страницы.
Какие альтернативные подходы я должен рассмотреть?
В его нынешнем виде я просто собираюсь прикрепить объект Point к моему завернутому драйверу и сам отследить его ....?