Селекторные элементы селена - я думал, что xPath был самым медленным?

Я провел несколько тестов на общедоступном веб-сайте, чтобы узнать, смогу ли я найти различия в производительности нескольких различных селекторов CSS Selenium. Я управлял одним центром с пятью узлами; mac / chrome / local, mac / safari / local, mac / ff / local, win7 / ie9 / localVM и win8 / ie10, localVM. Все тесты выполнялись параллельно, чтобы попытаться смоделировать, как я их обычно выполняю. Я был удивлен, увидев, что селекторы xPath не оказались тем дьяволом, которого я ожидал. Может быть, в моих тестах есть что-то напуганное? У кого-нибудь есть понимание?

Вот тестовый код ...

    int cycles = 500;
int yVal = 0;

getPage(“http://www.princeton.edu");

/* try an element that does not have an id*/
startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementByCssSelector("a[href='/main/news/events/']").getLocation().y;
print("By CSS: " + elapsedSeconds());

startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementByCssSelector("div[id='events'] a[href='/main/news/events/']").getLocation().y;
print("By CSS using id: " + elapsedSeconds());


startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementByXPath("//a[@href=\'/main/news/events/']").getLocation().y;
print("By xPath: " + elapsedSeconds());

/* try an element with an id */
//by id
startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementById("events").getLocation().y;
print("By Id: " + elapsedSeconds());

//by CSS
startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementByCssSelector("div[id='events']").getLocation().y;
print("By CSS: " + elapsedSeconds());

// an unnecessarily long xPath expression
startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementByXPath("//span[text()='News at Princeton']/ancestor::div[1]/following-sibling::div[1]").getLocation().y;
print("By longer xPath: " + elapsedSeconds());

// somewhat shorter xPath
startStopwatch();
for (int i = 0; i < cycles; i++)
    yVal = driver.findElementByXPath("//span[text()='Featured Events']/ancestor::div[1]").getLocation().y;
print("By shorter xPath: " + elapsedSeconds());

Вот результаты, показывающие, что xPath хранит свой собственный, все время в секундах для 500 итераций.

Safari был самым беспорядочным исполнителем, время для каждого теста было странно разным.

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

Есть мысли о том, что мне здесь не хватает ??

Ответы на вопрос(1)

Ваш ответ на вопрос