0

Ich suchte im Internet für einige Zeit, und ich kann es nicht herausfinden.Selen FirefoxDriver getText - UTF-8 Codierung

Bei der Verwendung von Selen mit dem FirefoxDriver kann keine Aktionen auf den Text durchführen Weil ich immer halten ???? anstelle von tatsächlichen Zeichen.

Quelldatei Beispiel:

enter image description here

Java-Code:

WebDriver driver = new FirefoxDriver(); 

Ich habe versucht, fand ich online einige Profile zu verwenden - hat nicht funktioniert.

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference(<something>, <something>); 
profile.setPreference(<something>, <something>); 
driver = new FirefoxDriver(profile); 

denke ich, das Problem bei der Codierung von Firefox Standard ist, ist Hexe "westliche".
und ich brauche es "UTF-8", oder je nach Standort zu ändern.

Alle Antworten auf die Fragen, die ich gesehen habe, haben das Problem nicht gelöst.

+0

ja seine harte form information zur verfügung gestellt können sie bitte tatsächlichen htl quellcode –

+0

Könnten sie zeigen screenshot von web, das Firefox gerendert hat? – Buaban

+0

[link] (http://yedion.afeka.ac.il/yedion/fireflyweb.aspx?prgname=login) Dies ist die Website. –

Antwort

1

Ich bin 99% sicher, dass dies einfach eine Frage der OP ist, die keine hebräische Schriftart installiert hat (e.g.) auf ihrem Client-Rechner.

Nach ein wenig Detektivarbeit scheint this site sehr nah an der zu testenden Seite. Es ist nicht genau das gleiche, aber ich denke, es zeigt den Unterschied mit der richtigen Schriftart hat.

enter image description here

Natürlich nicht die richtige Schriftart, die nicht stoppen Sie die Server-Ausgabe zu validieren.

@Test 
public void testHebrew() { 
    WebDriver driver = new FirefoxDriver(); 
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    driver.get("https://yedion.yvc.ac.il"); 
    Assert.assertEquals(driver.getTitle(), "תחנת מידע לסטודנט המכללה האקדמית עמק יזרעאל"); 
} 

ist eine schnelle Möglichkeit, dass die Ausgabe des Servers zu überprüfen ist richtig, auch wenn Ihr Web-Client der Wahl kann nicht gesagt Ausgang machen.

+0

der hebräischen Schriftart ist in Ordnung, wenn ich die Website verwenden. Das Problem ist, wenn ich Selen aktivieren - der Quellcode ist alle Fragezeichen, wo die hebräischen Zeichen sein sollen. –

+0

und ja, es ist praktisch die gleiche Seite. [link] (http://yedion.afeka.ac.il/yedion/fireflyweb.aspx?prgname=login) –

+1

Unabhängig davon, wie der Inhalt in * View Source * aussieht, hast du versucht, meinen Arbeitstest auszuführen (oben) ? Ihre Seite meldet einen UTF8-Inhaltstyp (der alle Browser-Standardeinstellungen außer Kraft setzt), der in meinem Beispiel den Java-Unicode-Zeichen entsprechen sollte. Sie sollten keine Workarounds/Hacks benötigen, um Unicode-Sites Ende-zu-Ende zu testen. –

1

Hallo, ich habe eine Arbeit um für die Frage erledigt die Idee ist, dass

1.First take all value inside the list(here i think you are getting ???? instead of actual charterers .) 
2.Now save all values inside the text document which save all value in UTF-8 format 
3.Now read those values from the text file (now they will print the way they are in web app) 
4. Now perform your next operation 

5.Ich ein Probestück von Arbeitscode angebracht haben, müssen Sie einen Blick

public static void main(String[] args) throws IOException, InterruptedException { 
     // TODO Auto-generated method stub 
     System.setProperty("webdriver.chrome.driver","D:\\eclipseProject\\StackOverFlow\\chromedriver_win32 (1)\\chromedriver.exe"); 
     WebDriver driver = new ChromeDriver(); 
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
     driver.manage().window().maximize(); 
     driver.get("https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Ftab%3Dwm"); 

     // below in the right corner there is a Drop-down with values of languages for different country 
     // take them all inside the list 
     List<WebElement> myddval = driver.findElements(By.xpath("//*[@id='lang-chooser']/option")); 
     System.out.println(myddval.size()); 

     // print the last value inside the dd on to the console 
     System.out.println("DD value before Change (ANSI format) : "+ myddval.get(myddval.size()-1).getText()); // will print ???? in the console 
     // now create a text document which saves its content form ANSI to UTF-8 format 
     writer = new PrintWriter("C:\\Users\\rajnish\\Desktop\\name.txt", "UTF-8"); 
     // writing only the last value form dd in the text document = 繁體中文 
     writer.write(myddval.get(myddval.size()-1).getText()); 
     System.out.println("value in the dd is : " + myddval.get(myddval.size()-1).getText()); 
     writer.close(); 
     // reading the value and printing it in the console now it will print = 繁體中文 
     bufferedReader = new BufferedReader(new FileReader("C:\\Users\\rajnish\\Desktop\\name.txt")); 
     System.out.println("Reading Text after converting it to UTF-8 Encoding : "+ bufferedReader.readLine()); 

     // now performing some action 
     driver.findElement(By.id("lang-chooser")).click(); 
     Thread.sleep(2000); 
     myddval.get(myddval.size()-1).click(); 

    } 
+0

tolle Idee, schon etwas ähnliches versucht. leider funktioniert das nicht für WebDriver driver = new FirefoxDriver(); . –

+0

und ich brauche es mit Selen Firefox Treiber zu arbeiten. –

+0

danke @sahar Milis Ich habe nicht mit Firefox versucht, aber ich denke, es wird für firefox arbeiten sogar –