Получите относительное положение между 2 элементами DOM с помощью JavaScript

Перед добавлением заголовка браузера в 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));
        }
    }
}
14
задан davil 22 October 2008 в 13:03
поделиться

3 ответа

Я никогда не использовал jQuery, просто искал API, таким образом, я могу предположить, что можно сделать следующее:

var o1 = $(element1).offset();
var o2 = $(element2).offset();
var dx = o1.left - o2.left;
var dy = o1.top - o2.top;
var distance = Math.sqrt(dx * dx + dy * dy);
22
ответ дан 1 December 2019 в 12:14
поделиться

Используя чистый JavaScript.

var dx = obj1.offsetLeft - obj2.offsetLeft;
var dy = obj1.offsetTop - obj2.offsetTop;
var distance = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2));
1
ответ дан 1 December 2019 в 12:14
поделиться

Что относительно следующего?

var isIE = navigator.appName.indexOf("Microsoft") != -1;

function getDistance(obj1, obj2){
    var obj1 = document.getElementById(obj1);
    var obj2 = document.getElementById(obj2);
    var pos1 = getRelativePos(obj1);
    var pos2 = getRelativePos(obj2);
    var dx = pos1.offsetLeft - pos2.offsetLeft;
    var dy = pos1.offsetTop - pos2.offsetTop;
    return {x:dx, y:dy};
}
function getRelativePos(obj){
var pos = {offsetLeft:0,offsetTop:0};
while(obj!=null){
    pos.offsetLeft += obj.offsetLeft;
    pos.offsetTop += obj.offsetTop;
    obj = isIE ? obj.parentElement : obj.offsetParent;
}
return pos;
}
//
var obj = getDistance("element1","element2")
alert(obj.x+" | "+obj.y);
1
ответ дан 1 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

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