Selenium - как узнать количество открытых вкладок в окне?

Мой тестовый пример:

  1. Откройте браузер и перейдите по URL-адресу
  2. Щелкните ссылку на домашней странице -> Откроется новое окно / новая вкладка.
  3. Вернитесь на главную страницу.
  4. Щелкните другую ссылку.
  5. Убедитесь, что новый контент отображается в ранее открытом дочернем окне / дочерней вкладке с шага 2.

Я могу проверить количество открытых окон, подсчитав количество оконных дескрипторов, и заявить, что оно равно 2 - чтобы при нажатии второй ссылки контент обновлялся в том же дочернем окне и не открывал другое новое окно. .

Если в случае, если ссылки открываются в новых вкладках, как я могу проверить этот тестовый пример (Новая вкладка открывается при первом нажатии ссылки на домашней странице. И при дальнейшем нажатии любых ссылок на домашней странице содержимое обновляется на той же новой вкладке )? Есть ли способ подсчитать количество вкладок в окне?

Или селен заставляет открывать новые вкладки как новые окна?


person sanaku    schedule 27.02.2016    source источник
comment
Вы, кажется, слишком усложняете это. Selenium делает не больше и не меньше, чем сделал бы настоящий пользователь (хорошо). Щелкнув ссылку, почему вы не можете затем проверить ее содержимое и продолжить оттуда, вместо того, чтобы пытаться переключать окна и вкладки. Если вам не нужно принудительно применять какой-либо конкретный способ нажатия ссылок, просто следуйте потоку и протестируйте текущую вкладку (или окно - вам все равно)   -  person Andrew Regan    schedule 28.02.2016
comment
Вкладки - это окна, которые просто отображаются по-разному для удобства человека, но расширения / плагины браузера, включая селен, видят их все как окна. Таким образом, вы никогда не сможете определить, что есть что - это зависит от настроек браузера по умолчанию и настроек, указанных пользователем.   -  person Kiril S.    schedule 28.02.2016
comment
@AndrewRegan KirilS, но как тогда я могу подсчитать количество вкладок? есть ли у них какое-либо уникальное свойство, которое я могу использовать для их идентификации? у них будет тот же идентификатор окна, что и на домашней странице, поэтому я не могу использовать счетчик windowHandle - это правильно?   -  person sanaku    schedule 28.02.2016
comment
Я не думаю, что тестировщик должен пытаться подсчитывать вкладки - когда это кажется необходимым только потому, что вы обходите поток пользователя.   -  person Andrew Regan    schedule 28.02.2016
comment
Я как бы согласен с Эндрю Риганом, подсчет ничего не доказывает и не то, что сделал бы пользователь. Скажем, если вы хотите вручную проверить, открыта ли ссылка в существующем окне, вы должны переключиться в это окно и проверить, что в нем отображается. То же самое с селеном: переключитесь в это окно и проверьте, отображает ли оно ожидаемую вами страницу. И если вы хотите вручную проверить, что ссылка открывает новое окно, вы заметите, какие окна у вас есть, затем откроете ссылку, а затем увидите, что все старые окна не изменились, и есть новое окно с ожидаемым содержимым. То же и в селене.   -  person Kiril S.    schedule 28.02.2016


Ответы (2)


Перейдите на главную страницу и щелкните ссылку, чтобы открыть новую вкладку / окно. Вы можете выполнить следующие действия:
1. Откройте браузер и перейдите к TestURL
2. Нажмите ссылку / кнопку «Войти» в правом верхнем углу -> Вы попадете в новую вкладку / окно.

Ниже приведен код Selenium Java:

ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
System.out.println("No. of tabs: " + tabs.size());

OR,

Set<String> allWindowHandles = driver.getWindowHandles();
ArrayList<String> tabs = new ArrayList<String>(allWindowHandles);
System.out.println("No. of tabs: " + tabs.size());
person Ripon Al Wasim    schedule 28.08.2017

Чтобы узнать количество открытых вкладок в окне

    ArrayList<String> multipleTabs = new ArrayList<String>   (robot.getWebDriver().getWindowHandles());

Получить размер arrayylist т.е. Значение счетчика

    System.out.println(multipleTabs.size());

Следовательно, количество открытых вкладок в окне - это не что иное, как размер указанного выше списка массивов.

person Thirunavukarasu Paramasivam    schedule 29.06.2016
comment
Зачем нужен робот? - person Ripon Al Wasim; 28.08.2017
comment
лучшее решение - driver.getWindowHandles (). size (), FYI все - person Freedom; 27.06.2018