Как проверить, сколько окон можно открыть с веб-страницы с помощью Selenium - PullRequest
0 голосов
/ 04 февраля 2019

Когда одно / несколько окон уже открыты на веб-странице, мы можем узнать количество окон, которые уже открыты с помощью селена.Но есть ли способ узнать по любому тегу или любым другим способом, сколько всего окон может быть действительно открыто на заданной веб-странице с использованием селена.

Например, у нас есть якорный тег для всех URL-адресов, присутствующих на веб-странице, поэтому есть ли способ узнать, сколько окон можно открыть на веб-странице или по щелчку, сколько кнопок / ссылок, окно будет открыто.

Решение в любой из Java или Python и для любой веб-страницы будет приветствоваться.

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Я получил ваш вопрос, в основном вы хотели бы проверить, сколько окон может быть открыто веб-страницей.

Для этого вы можете использовать ниже xpath, который даст вам количество веб-страниц, которые будут открыты натекущая веб-страница

//a[@target="_blank"]

Вы можете использовать код как показано ниже:

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class Testing {
	public static WebDriver driver;

	@Test
	public void test() throws InterruptedException {
		
		
		
		System.setProperty("webdriver.chrome.driver", "./Driver/chromedriver");
		driver = new ChromeDriver();
		driver.get("https://stackoverflow.com");
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
		Thread.sleep(1000);
		List<WebElement> elements = driver.findElements(By.xpath("//a[@target=\"_blank\"]"));
		int count =0;
		for ( WebElement element:elements) 
		{
			count++;
		
		}
		System.out.println("Total number of window will be opened by this webpage is:"+ count); 
	}
}
0 голосов
/ 04 февраля 2019

Отвечая прямо, на самом деле нет определенного способа вычислить , сколько (дочерних) окон может быть открыто с веб-страницы с помощью Selenium .

<a>: Элемент Anchor

Элемент HTML <a> (или элемент anchor ) определяет гиперссылку, которая используется для ссылки с одной страницы на другие веб-страницы, файлы, местоположения на этой же странице., адреса электронной почты или любой другой URL.Наиболее важным атрибутом элемента <a> является атрибут href , который указывает пункт назначения ссылки.Атрибут target может использоваться только с атрибутом href в теге привязки следующим образом:

  • Если целевой атрибут не используется, ссылка откроется на той же странице.

  • Если для целевого атрибута установлено значение _blank, ссылка откроется в новомокно браузера или новая вкладка.

    • Пример:

      <!DOCTYPE html>  
      <html>  
          <head>  
              <title></title>  
          </head>  
          <body>  
              <p>Click on <a href="https://www.javatpoint.com/" target="_blank"> this-link </a>to go on home page of JavaTpoint.</p>  
          </body>  
      </html> 
      

Теперь вы можете вызвать открытиеновые TAB / Windows с помощью HTML-тега до тех пор, пока Test Environment не будет иметь достаточных временных ресурсов memory , shared memory и т. д.Связанное обсуждение можно найти в неизвестная ошибка: сеанс удален из-за сбоя страницы из-за неизвестной ошибки: невозможно определить состояние загрузки из-за сбоя вкладки с помощью ChromeDriver Selenium

Примечание :Одним из важных аспектов является то, что если вы открываете новую вкладку / окно и намереваетесь переключить Selenium фокусируясь на недавно открытом TAB / Window, вам нужно вызвать WebDriverWait следующим образом:

  • ( Java Пример) Ожидаемые условия как numberOfWindowsToBe(int expectedNumberOfWindows):

    new WebDriverWait(driver,10).until(ExpectedConditions.numberOfWindowsToBe(2));
    
    • Здесь вы можете найти подробное обсуждение
  • ( Python Пример) Ожидаемые условия как number_of_windows_to_be(num_windows):

    WebDriverWait(driver, 10).until(expected_conditions.number_of_windows_to_be(2))
    
0 голосов
/ 04 февраля 2019

Да, на основании тега привязки вы можете определить, сколько ссылок вы можете открыть со страницы, а ссылку можно открыть в 'n' окнах, поэтому после открытия ссылки в окнах вы можете получить количество открытых окон, попробуйтекод ниже:

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class Testing {
    public static void main(String ...ali) {
        System.setProperty("webdriver.chrome.driver", "C:\\NotBackedUp\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://www.google.com");
        driver.findElement(By.name("q")).sendKeys("alicse3"+Keys.ENTER);

        List<WebElement> links = driver.findElements(By.xpath("//a"));
        int nonEmptyLinks = 0;
        for(WebElement element : links) {
            String link = element.getText().trim();
            if(!link.isEmpty()) {
                System.out.println(element.getText());
                nonEmptyLinks++;
            }
        }
        System.out.println("=> The total links is/are '"+nonEmptyLinks+"', so you can open '"+nonEmptyLinks+"' windows using anchor tag...");
    }
}

Приведенный выше код будет подсчитывать, сколько «href» присутствует, но не может сказать, сколько окон вы можете открыть, потому что вы можете открыть «n» окон.Используя приведенный ниже код, вы можете найти количество открытых окон:

Set<String> windows = driver.getWindowHandles();
System.out.println("=> The total windows opened is/are : "+windows.size());
...