如何通过Selenium快速获取网页上所有元素的大小和位置

时间:2019-06-17 12:48:08

标签: python selenium

我需要获取网页上每个元素的大小和位置。 如果我尝试过幼稚的方法,那会非常慢(通常,处理一些常见的页面(如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 个答案:

答案 0 :(得分:1)

我不确定您希望如何使用此信息,但是请使用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("|");

启动