Сделайте снимок экрана с Firefox - PullRequest
1 голос
/ 13 июня 2019

У меня чертовски много времени выясняется, почему эта простая команда не работает.

Я пытаюсь сделать скриншоты списка доменов, используя PowerShell и Firefox для [этой статьи] [1].

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

$screenshotdir = "$PSScriptRoot\FF_Screenshots"
If(!(Test-Path -Path $screenshotdir)) {New-Item -Path $PSScriptRoot -Name "FF_Screenshots" -ItemType Directory}

    function getFireFoxScreenShot() {
        $importedCSV = Import-Csv .\Domains.csv

        foreach ($url in $importedCSV) {
            $domainName = $url.Name #example google.com
            $domain = $url.Domain #example google (no tld)
            if (-not ([string]::IsNullOrEmpty($domainName))){       
                Echo "Getting Screen Shot for: $domainName"
                Start-Process -FilePath "C:\Program Files\Mozilla Firefox\firefox.exe " -ArgumentList " --screenshot $screenshotdir\$domain.png ", "$domainName" -Wait            
            }
       }
    }
    getFireFoxScreenShot

[1]: https://www.bleepingcomputer.com/news/software/chrome-and-firefox-can-take-screenshots-of-sites-from-the-command-line/

1 Ответ

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

Обязательно укажите протокол (https:// или http://), как в статье, на которую вы ссылались:

# Tested with Developer Edition of Firefox
$domain = "example"
$domainName = example.com"
$screenshotdir = "C:\SO\56572800"


# This works
Start-Process -FilePath "C:\Program Files\Firefox Developer Edition\firefox.exe" -ArgumentList "--screenshot $screenshotdir\$domain-with-https.png", "https://$domainName" -Wait

# But doesn't work
Start-Process -FilePath "C:\Program Files\Firefox Developer Edition\firefox.exe " -ArgumentList " --screenshot $screenshotdir\$domain-no-https.png ", "$domainName" -Wait

Из того, что я проверил, если вы не укажете https://префикс (или http://, если применимо), он будет зависать в течение длительного времени, поэтому у вас может сложиться впечатление, что он работает.


Как @ lloyd , упомянутый в комментариях,Вы должны убедиться, что значение $screenshotdir правильно назначено и доступно для функции.

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

                                                                HERE |          HERE |                                    HERE |
Start-Process -FilePath "C:\Program Files\Mozilla Firefox\firefox.exe " -ArgumentList " --screenshot $screenshotdir\$domain.png ", "$domainName" -Wait     
...