Как быстро определить размер и расположение всех элементов на веб-страницах Selenium - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно узнать размер и расположение каждого элемента на веб-странице. Если я попробую наивный подход, то он будет очень медленным (обычно для обработки некоторых распространенных страниц, таких как www.amazon.com и т. Д.) Требуется около 2 минут.

Есть ли какой-нибудь значительно более быстрый способ получения этой информации?

Мой наивный подход:

from selenium import webdriver

driver = webdriver.Chrome(..."\chromedriver.exe")
driver.get("https://www.amazon.com")

html = driver.find_element_by_tag_name('html')
for e in html.find_elements_by_css_selector("*"):
    size = e.size
    location = e.location

1 Ответ

1 голос
/ 17 июня 2019

Я не уверен, что вы надеетесь сделать с этой информацией, но используйте исполнители javascript для запуска следующего Javascript. Если вам нужны данные в другом формате, не стесняйтесь редактировать их так, как вы хотите, чтобы ваш скрипт использовал их. Это займет около 1 секунды, чтобы получить всю эту информацию.

var returnValues = "";
var els = $("*:visible");
for(var x = 0; x < els.length; x++) {
  
  returnValues += `${$(els[x]).height()},${$(els[x]).width()},${$(els[x]).position().left},${$(els[x]).position().top}|`;
  console.log(`${$(els[x]).height()} x ${$(els[x]).width()}`);
  console.log(`pos: x:${$(els[x]).position().left} y:${$(els[x]).position().top}`);

}
return returnValues;

Это можно запустить через var results = driver.execute_script("Above javascript").split("|");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...