Meta Tags vergleichen mit Html Vorgabe

IKL

Mitglied
Hallo ,
ich versuche seit einigen Tagen meinen gefundenen HTML Tag mit meiner Vorlage zu vergleichen.

Nur leider kann ich meine Vorlage nicht als String schreiben.
Das geht nicht. Eclipse mag nur einzelne Worte aus dieser Vorlage.
hier der Code:

Java:
BufferedReader in = new BufferedReader(new InputStreamReader(start.openStream()));
            String pr;
            StringBuilder b = new StringBuilder();
            while ((pr = in.readLine()) != null) {
                // str is one line of text; readLine() strips the newline
                // character(s)
                b.append(pr);          
               

            }

            in.close();


            String input = (b.toString());
String code= "@type(.+?)";
            Pattern p = Pattern.compile(code);
            Matcher m = p.matcher(input);

            System.out.println(" Die Suche in der URL nach dem  Worte   ergab " + m.find());

            logger.log(LogStatus.PASS,
                    "Die Suche in der URL " + url + "nach dem  Worte "+ " :  ergab " + m.find(0));

        } catch (MalformedURLException e) {
        } catch (IOException e) {
        }

    }
   
}


Anstelle von dem String code hätte ich gerne folgende Zeile gesucht:


HTML:
<script type="application/ld+json">
          [{"@type":"Organization","@context":"http://schema.org","logo":"https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg","contactPoint":{"@type":"ContactPoint","telephone":"+49-80090809080","contactType":"customer support","contactOption":"TollFree"},"url":"https://www.betzold.de/"}]</script>
Gruß
 
Ja , aber diese Javacsript zeile nimmt er nicht.
ich hab schon endcodiert wie zb. so..

&lt;script type=&quot;application/ld+json&quot;&gt;
[{&quot;@type&quot;:&quot;Organization&quot;,&quot;@context&quot;:&quot;http://schema.org&quot;,&quot;logo&quot;:&quot;https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg&quot;,&quot;contactPoint&quot;:{&quot;@type&quot;:&quot;ContactPoint&quot;,&quot;telephone&quot;:&quot;+49-80090809080&quot;,&quot;contactType&quot;:&quot;customer support&quot;,&quot;contactOption&quot;:&quot;TollFree&quot;},&quot;url&quot;:&quot;https://www.betzold.de/&quot;}]&lt;/script&gt;

füge ich das in meinen String anstatt "@type(.+?)" kommt eine Fehlermeldung.
 
Code:
FAILED: HtmlschemaOrgTest
java.util.regex.PatternSyntaxException: Illegal character range near index 337
cript type=&quot;application/ld+json&quot;&gt;[{&quot;@type&quot;:&quot;Organization&quot;,&quot;@context&quot;:&quot;http://schema.org&quot;,&quot;logo&quot;:&quot;https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg&quot;,&quot;contactPoint&quot;:{&quot;@type&quot;:&quot;ContactPoint&quot;,&quot;telephone&quot;:&quot;+49-80090809080&quot;,&quot;contactType&quot;:&quot;customer support&quot;,&quot;contactOption&quot;:&quot;TollFree&quot;},&quot;url&quot;:&quot;https://www.betzold.de/&quot;}]&lt;/script&gt;
                                                                                                                                                                                                                                                                                                                                                 ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.range(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at htmlTest.HtmlschemaOrg.HtmlschemaOrgTest(HtmlschemaOrg.java:96)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:774)
    at org.testng.TestRunner.run(TestRunner.java:624)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
    at org.testng.SuiteRunner.run(SuiteRunner.java:261)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.run(TestNG.java:1048)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)


dieser Fehler kommt wenn ich es soo.. einfüge

wenn ich folgendes einfüge:

Code:
<script type="application/ld+json">
          [{"@type":"Organization","@context":"http://schema.org","logo":"https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg","contactPoint":{"@type":"ContactPoint","telephone":"+49-80090809080","contactType":"customer support","contactOption":"TollFree"},"url":"https://www.betzold.de/"}]</script>


kommt diese Fehlermeldug

Code:
FAILED CONFIGURATION: @AfterMethod tearDown([TestResult name=HtmlschemaOrgTest status=FAILURE method=HtmlschemaOrg.HtmlschemaOrgTest()[pri:0, instance:htmlTest.HtmlschemaOrg@6d4b1c02] output={null}])
java.lang.NullPointerException
    at BrowserUrl.browserUrl.tearDown(browserUrl.java:202)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:703)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:774)
    at org.testng.TestRunner.run(TestRunner.java:624)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
    at org.testng.SuiteRunner.run(SuiteRunner.java:261)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.run(TestNG.java:1048)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)

FAILED: HtmlschemaOrgTest
java.lang.Error: Unresolved compilation problem:
    Syntax error, insert ";" to complete LocalVariableDeclarationStatement

    at htmlTest.HtmlschemaOrg.HtmlschemaOrgTest(HtmlschemaOrg.java:95)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
    at org.testng.TestRunner.privateRun(TestRunner.java:774)
    at org.testng.TestRunner.run(TestRunner.java:624)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
    at org.testng.SuiteRunner.run(SuiteRunner.java:261)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.run(TestNG.java:1048)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:137)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:58)
 
compile erwartet einen regulären Ausdruck, du musst also alle Zeichen im String, die dafür eine besondere Bedeutung haben, escapen.

Musst du zwingend Pattern.matches benutzen oder ginge auch String.contains, das erwartet keine RegEx?
 
Vielen Dank erst mal für die Antwort.
da ich Java und Selenium Tests erst seit März mache , mir selbst bei gebracht habe und ich nicht soviel Erfahrung habe, würde ich da gerne eure Meinung dazu wissen.
Was und wie ist es schlauer an die Sache ran zu gehen?
 
Hallo,

so richtig bin ich noch nicht weoiter gekommen.
ich kann zwei Zeichenketten nicht vergleichen.
habe es mit ==, oder equales oder equalsIgnoreCase versucht, aber er findet keine Gleichheit.

optisch sind sie gleich.
Ich habe auch drei String Varianten angelegt.
hier mal der Code:


Java:
try { // test url

   URL start = new URL(url);
   String vergleich1 = "[{"
     +"@type"
     + ":"
     +"Organization"
     +","
     + "@context"
     +":"
     + "http://schema.org"
     +","
     +"url"
     +":"
     +"https://www.betzold.de/"
     +","
     +"logo"
     +":"
     +"https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg"
     +","
     +"contactPoint"
     +":{"
     +"@type"
     +":"
     +"ContactPoint"
     +","
     +"telephone"
     + ":"
     +"+49-80090809080"
     +","
     +"contactType"
     +":"
     +"customer support"
     +","
     +"contactOption"
     +":"
     +"TollFree"
     +"}}]</script";

   String vergleichneu =  "  [{'@type':'Organization','@context':'http://schema.org','contactPoint':{'@type':'ContactPoint','telephone':'+49-80090809080','contactType':'customer support','contactOption':'TollFree'},'url':'https://www.betzold.de/','logo':'https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg'}]</script";
   String vergleich = "  [{'@type':'Organization','@context':'http://schema.org','url':'https://www.betzold.de/','logo':'https://www.betzold.de/assets/betzold/media/img/betzold_logo.jpg','contactPoint':{'@type':'ContactPoint','telephone':'+49-80090809080','contactType':'customer support','contactOption':'TollFree'}}]</script";

   // Read all the text returned by the server
   BufferedReader in = new BufferedReader(new InputStreamReader(start.openStream()));
   String pr;
   StringBuilder b = new StringBuilder();
   while ((pr = in.readLine()) != null) {
     // str is one line of text; readLine() strips the newline
     // character(s)
     b.append(pr);

     String[] teile = pr.split(">");

     if (pr.indexOf("Organization") != -1) {
       System.out.println(teile[0]);
       String[] komma = teile[0].split(",");

       if (teile[0].indexOf("") != -1) {
         System.out.println(komma[0]);
         System.out.println(komma[1].equalsIgnoreCase( "'contactPoint':{'@type':'ContactPoint'" ));
         System.out.println(komma[2]);
         System.out.println(komma[3]);
         System.out.println(komma[4]);
         System.out.println(komma[5]);
         System.out.println(komma[6]);
         System.out.println(komma[7]);
       }
     }
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben