Очистить значения, сгенерированные скриптом, из активной вкладки chrome скрипт содержимого расширения - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь очистить значения со страницы, которые были созданы сценарием JS. Когда я проверяю страницу, я вижу там значения, но мои селекторы возвращают null / undefined.

Цель расширения - позволить людям одним нажатием кнопки очистить свои персональные данные со страницы который требует входа в систему БЕЗ необходимости предоставлять какие-либо данные для входа в расширение.

В chrome -консоли возвращаются значения stati c "title", поэтому я почти уверен, что мои селекторы в порядке и просто доступ к документу не учитывается для выполненных скриптов. d необходимо получить данные для входа в систему, чтобы имитировать процесс входа), или мне нужно изменить способ запуска браузера chrome с --remote-debugging-port=A_PORT_NUMBER, чего я хочу избежать.

С консоли chrome и мое расширение, я могу получить значения, выделенные зеленым (так что это не проблема с iframe, как предлагают некоторые сообщения) и не могу получить значения, выделенные красным.

HTML структура на изображении

image

document.addEventListener("DOMContentLoaded", function () {
...
    document.querySelector('button[id="scrape"]').addEventListener("click", function onclick() {
        chrome.tabs.query({ currentWindow: true, active: true },
            function (activeTab) { 
                chrome.tabs.sendMessage(activeTab[0].id, { action: "putSource_scrapeSalePage", index: activeTab[0].index })
            }
        )
    })
    ...
 }, false)

Из содержимого. js

//Need to import pupeteer/selenium here? How else to use it for active tab?

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) { 
    ...
      else if (request.action === "putSource_scrapeSalePage") {
          let htmlvar = $(document)
          console.log(htmlvar);
          let test = $('td[desc= "transactionType"]').text().trim() //returns fine
          
          let tableData1raw = $('table.tableDataOne tbody tr').find("tbody").find("tr")

          let tableData1raw_almost = $(tableData1raw).each(function (i, element) {
              console.log(element)
              const $element = $(element).find("td")
              console.log($element)
...

Вопрос:

Если нет лучшего способа сделать это, как я могу сделать это из контент-скрипта с чем-то вроде pupeteer?

1 Ответ

0 голосов
/ 23 июня 2020

В конце концов, я смог использовать значение, которое я знаю, что МОЖЕТ получить (заголовок «тип транзакции»), и использовать его для перехода к его элементу-брату (+) и извлечения того, что там было, вместо попытки нацелить Класс Div напрямую.

$ ('td [desc = "transactionType"] + td'). Find ("div"). Text ();

...