Невозможно взять несколько заголовков окна для arraylist [дубликата]

Что-то, о чем здесь не упоминалось, хотя и немного похоже на вторую альтернативу принятого ответа, но отличается и невысокой стоимостью для большого иерархического запроса и простых элементов (insert update delete), будет добавлять столбец постоянных путей для каждого элемента.

some like:

id | name        | path
19 | category1   | /19
20 | category2   | /19/20
21 | category3   | /19/20/21
22 | category4   | /19/20/21/22

Пример:

-- get children of category3:
SELECT * FROM my_table WHERE path LIKE '/19/20/21%'
-- Reparent an item:
UPDATE my_table SET path = REPLACE(path, '/19/20', '/15/16') WHERE path LIKE '/19/20/%'

Оптимизировать длину пути и ORDER BY path, используя кодировку base36, вместо этого действительный числовой идентификатор пути

]

 // base10 => base36
 '1' => '1',
 '10' => 'A',
 '100' => '2S',
 '1000' => 'RS',
 '10000' => '7PS',
 '100000' => '255S',
 '1000000' => 'LFLS',
 '1000000000' => 'GJDGXS',
 '1000000000000' => 'CRE66I9S'

https://en.wikipedia.org/wiki/Base36

Подавление разделителя '/' с помощью фиксированной длины и отступов до encoded id

Подробное объяснение оптимизации здесь: https://bojanz.wordpress.com/2014/04/25/storing-hierarchical-data-materialized-path/

TODO

построение функции или процедуры для разделения пути для возвращающих предков одного элемента

0
задан Pritam Maske 3 March 2019 в 08:31
поделиться

1 ответ

Перед добавлением заголовка браузера в ArrayList «Заголовки» вы должны переключиться на вновь открытое окно и затем выполнить getTitle

. Пожалуйста, обратитесь к Модифицированному коду:

package practice;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.ArrayList;
import java.util.Set;

public class WindowSwitchProgram {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "src\\main\\resources\\drivers\\win\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();

        driver.get("http://seleniumpractise.blogspot.com/");

        driver.findElement(By.linkText("Multiple window examples")).click();
        String parentWindw = driver.getWindowHandle();

        ArrayList Titles = new ArrayList();

        driver.findElement(By.xpath("//*[@id='post-body-6170641642826198246']/a[1]")).click();

        Titles.add(driver.getTitle());

        driver.switchTo().window(parentWindw);

        driver.findElement(By.xpath("//*[@id=\"post-body-6170641642826198246\"]/a[2]")).click();
        driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
        Titles.add(driver.getTitle());

        driver.switchTo().window(parentWindw);

        driver.findElement(By.xpath("//*[@id=\"post-body-6170641642826198246\"]/a[3]")).click();
        //System.out.println(driver.getTitle());
        driver.switchTo().window(driver.getWindowHandles().toArray()[2].toString());
        Titles.add(driver.getTitle());

        driver.switchTo().window(parentWindw);

        Set allWindwHandles = driver.getWindowHandles();
        int winCount = allWindwHandles.size();
        System.out.println(winCount);

        ArrayList tabs = new ArrayList(allWindwHandles);


        for (int j = 1; j < winCount; j++) {
            driver.switchTo().window(tabs.get(j).toString());
            System.out.println(driver.getTitle());
            System.out.println(Titles.get(j - 1));
        }
    }
}
0
ответ дан Pritam Maske 3 March 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: