Вы проверьте в одном месте. Поможет это или нет. Зачем сразу везде менять?
запускать на Linux vm или контейнере / Xvfb или vnc / Chrome или FF не пробовали ? все проблемы сразу решите
по моему еще javascrtipt ом можно двигать - несколько способов есть
например основанный на DOM методе
разнообозные его обертки
Попробуйте (IJavaScriptExecutor)Driver.ExecuteScript(“window.scrollTo(0,document.body.scrollHeight);”);
У меня работает.
Если не получится, пробуйте через new Actions(Driver).MoveToElement(element).Click().Perform();
@Noksa @Ihor_Kokhan Попробовала принудительно задавать размер окна, максимизировать, настраивать установки Crome на машине, на которой запускаются тесты. Ничего не помогло.
Сработало только Actions(Driver).MoveToElement(element).Click().Perform();
Но в этом случае мне нужно сделать свой метод Click2, который будет включать Actions(Driver).MoveToElement(element).Click().Perform(); + Click(). И вызывать именно этот клик во всех проблемных местах.
@sergueik на Linux я пока не готова переходить. Недостаток знаний потребует больше усилий для решения проблемы.
Уже включает в себе клик. Реплейс можете сделать по всему солюшену через ctrl+F в студии
Actions(Driver).MoveToElement(element).Click().Perform();
@Ihor_Kokhan а конечно, можно сделать замену по всему проекту. Но как?
Например :
list.btnDelete.Click();
т.е. мне нужно Actions(Driver).MoveToElement(list.btnDelete).Click().Perform();
Или я не правильно поняла?
что нибудь типа
find . -type f -a -name '*.cs' -exec sed -i 's/\(.*\).Click()/Actions(Driver).MoveToElement(\1).Click().Perform();/p' {} \;
может подойдет ? - я только что проверил что работает как надо
это выполнять из git bash если у вас windows вокруг
именно.
Заходите в студию. Нажимаете ctrl+F. Потом стрелочку в левом верхнем углу диалога чтоб свичнутся на реплейс. И меняете current document на Entire Solution. Скриншот диалога лепил выше.
если в коде который надо поменять переменная была каждый раз разная то нужно capture
( ) | Defines a marked subexpression. The string matched within the parentheses can be recalled later (see the next entry, \n). A marked subexpression is also called a block or capturing group. BRE mode requires ( ). |
---|---|
\n | Matches what the nth marked subexpression matched, where n is a digit from 1 to 9. This construct is vaguely defined in the POSIX.2 standard. Some tools allow referencing more than nine capturing groups. |
я лично Visual Studio не использую слишком тяжелая - и ответа на знаю так что сарказма в моем вопросе не было
Я понял о чем вы. Я не встречал такого. Я вижу 2 варианта:
-
Заменить все вхождения Click на кастомный метод ExtendedClick (как писал выше автор)
-
Заменить все вхождения Click на new Actions(Driver).MoveToElement(element).
Сбилдить и потом уже руками перекинуть в MoveToElement и дописать .Perform(); (или заменить Click() на Click().Perform(); )
Eclise умеет!
сам только что узнал - с радостью
В студии тоже есть Спросил у коллег) Я просто никогда не пользовался
Исходя из того, что у автора проблемных место 100 и более, можно сделать вывод, что там не используется паттерн PO, поэтому и надо менять в куче мест.
А если бы использовался - то поменять надо было бы максимум в парочке.
@Ihor_Kokhan , @sergueik Спасибо, все получилось
@Noksa Какой именно паттерн вы имеете ввиду?
Как у меня организован проект, вкратце. Есть отдельные классы с объектами страниц (например обекты страницы Логин, объкты страницы Корзина). Есть отдельные классы с ключевыми методами на страницах (Метод залогиниться, Метод добавить корзину, удалить корзину и.т). В этих методах я использую элементы из страницы с объектами.
А так же есть сами тесты которые используют методы Логин, добавить в корзину, удалить корзину.
Имеется ввиду Page Object
Имеется ввиду [Page Object](https://automated-testing.info/tags/page-object)
Так вот: Есть отдельные классы с объектами страниц (например обекты страницы Логин, объкты страницы Корзина)
Нашла такой пример.
http://autoqa.org/advanced-webdriver/ispolzovanie-page-object-patterna-selenium-webdriver.html
Только в этом примере и методы и объекты страницы в одном классе, а у меня это разные классы. Потому что много страниц и много методов описывающих разные поведение на каждой странице.