Selenium+Sikuli (JAVA) читает текст браузера вместо дополнения Chrome, которое мне нужно

Я пытаюсь очистить веб-сайты от поиска в Google по запросу "Пиксели Facebook". Через достаточно google+stackru я создал скрипт, который хорошо работает, за исключением одной вещи: текст аддона Pixel Facebook, который мне нужен для запуска остальной части скрипта, уклонился от моих различных вариантов кода для этого фрагмента. Пожалуйста, смотрите код ниже:

import java.io.IOException;
import java.util.Scanner;
import java.util.Set;
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Match;
import org.sikuli.script.Screen;
import org.sikuli.basics.Settings;
import org.sikuli.script.Pattern;



public class GoogleSearchJava {
public static final String GOOGLE_SEARCH_URL = "https://www.google.com/search";
public static void main(String[] args) throws IOException, InterruptedException {
        FileWriter writer = new FileWriter("path/to/gsj.csv");
        //Allow for image ORR
        Settings.OcrTextSearch= true;
        Settings.OcrTextRead=true;

        //Taking search term input from console
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter the search term."+"\n");
        String searchTerm = scanner.nextLine().trim();
        String[] splitSearchTerm = searchTerm.split(" ");
        String searchTermResult = String.join("+", splitSearchTerm);

        System.out.println("Please enter the number of results. Example: 5 10 20"+"\n");
        int num = scanner.nextInt();
        scanner.close();

        String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTermResult+"&num="+num;
        //without proper User-Agent, we will get 403 error
        Document doc = Jsoup.connect(searchURL).userAgent("Mozilla/5.0").get();

        //If google search results HTML change the <h3 class="r" to <h3 class="r1"
        //we need to change below accordingly
        Elements results = doc.select("h3.r > a");

        for (Element result : results) 
        {
            String linkHref = result.attr("href");
            String linkText = result.text();
            System.out.println("Text::" + linkText + ", URL::" + linkHref.substring(6, linkHref.indexOf("&")));
            // Opening chrome with that addon
            ChromeOptions options = new ChromeOptions();
           // options.addArguments("--disable-extensions");
            options.addExtensions(new File("/path/to/fdgfkebogiimcoedlicjlajpkdmockpc-1.1.6-Crx4Chrome.com.crx"));     
            System.setProperty("webdriver.chrome.driver","/path/to/chromedriver.exe" );
            WebDriver driver = new ChromeDriver(options);
            driver.manage().window().maximize();



            System.out.println("Opening extension");

            driver.get("chrome-extension://fdgfkebogiimcoedlicjlajpkdmockpc/fb_notif.html");
            driver.get(linkHref.substring(7, linkHref.indexOf("&")));
            Thread.sleep(10000);  

            // Creating object to the Sikuli screen class
            Screen s=new Screen();
            //Finding and clicking on the Addon image           
             try {
                 s.find("/path/to/AddonIcon.png");
                 s.click("/path/to/AddonIcon.png", 10);
                 Thread.sleep(3000);

                 s.find("path/to/AddonIconOrig.png");
                 s.click("/path/to/AddonIconOrig.png",10);
                 Thread.sleep(5000);

                    }
             catch (FindFailed e) 
             {            
                e.printStackTrace();
             }   
                    String popup = s.text();
                    System.out.println(popup);
                    driver.close();
                    String search  = "No pixels found";
                    if ( popup.toLowerCase().indexOf(search.toLowerCase()) >-1) 
                    {
                        System.out.println("I found the keyword");
                        List<String> test = new ArrayList<>();
                        test.add(linkHref.substring(7, linkHref.indexOf("&")));
                        String collect = test.stream().collect(Collectors.joining(","));

                        writer.write(collect);
                        writer.write("\n");   
                 } 
                    else 
                    {
                    System.out.println("not found");
                    }
             }   
        writer.close();
            }

}   

Код оценивает 2 разных значка аддона, потому что значок Facebook Pixel Helper изменяется в зависимости от наличия пикселей Facebook. Кроме того, изменив порядок, в котором я получаю URL-адрес пользовательского ввода и получаю html-аддон, то есть, чтобы первый шел первым, а потом - 100%, все ссылки не имеют пикселя Facebook, но это бесполезно, потому что некоторые из сайты имеют пиксели. Я не получаю ошибку как таковую, но могу сказать, что есть проблема из моих заявлений печати. Любая помощь ценится заранее! Йоши

0 ответов

Другие вопросы по тегам