Реальный против Селен Chrome Безголовый Javascript исполнение от Python - PullRequest
0 голосов
/ 30 марта 2020

Я заметил разницу между запуском моего скрипта в Chrome инструментах разработчика и скриптом python, который вызывается через Selenium в сеансе браузера без заголовка Chrome.

 divs = document.querySelectorAll("div[class*=x]");
 properties = [...divs].map(function(arg) {
               rect = arg.getBoundingClientRect();
               return rect});

по сравнению с:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.binary_location = '/usr/bin/google-chrome'

browser = webdriver.Chrome(executable_path=os.path.abspath("venv/bin/chromedriver"), chrome_options=chrome_options)
web_view = browser.get("file:///" + os.getcwd() + html_read_from)

real_properties = get_attributes_script = f"""
          divs = document.querySelectorAll("div[class*=x]");
          properties = [...divs].map(
               function(arg) {{
                   rect = arg.getBoundingClientRect();
                   return rect}});
          return properties;"""

edges_of_all_divs = browser.execute_async_script(get_attributes_script)
print(edges_of_all_divs)

В первом случае я получаю все хорошие прямоугольники для div, во втором случае я ничего не получаю: (

Это тот случай, когда Chrome в режиме без головы не отображает эти позиции? И если мне нужно это или если я хочу проверить формат на основе этого, что можно сделать?

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

...