0

Bir süreliğine çıkmak için internette aradım ve anlayamıyorum. i almaya devam cuzSelenium FirefoxDriver getText - UTF-8 kodlaması

FirefoxDriver ile Selenyum kullanırken, metin üzerinde eylemleri gerçekleştiremez ???? gerçek karakterler yerine.

Kaynak dosya örneği:

enter image description here

Java kodu: - işe yaramadı

WebDriver driver = new FirefoxDriver(); 

I online buldum bazı profilleri kullanmaya çalıştık.

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

Sorun Firefox ait varsayılan kodlamasında olduğunu düşünüyorum, cadı "Batılı" dır.
ve "UTF-8" olması veya siteye göre değişmesi gerekiyor.

Gördüğüm soruların tüm cevapları, sorunu çözmedi.

+0

evet, onun zor form bilgileri sağladıysanız lütfen gerçek htl kaynak kodu sağlayabilir –

+0

Firefox'un oluşturduğu web sitesinin ekran görüntüsünü gösterir misiniz? – Buaban

+0

[link] (http://yedion.afeka.ac.il/yedion/fireflyweb.aspx?prgname=login) site budur. –

cevap

1

lütfen çalışan bir kod örneğini parçası ekli olmasıdır soru için etrafında bir çalışma yaptık Bunun% 99'u, sadece istemci makinesinde yüklü bir İbranice fontu (e.g.) bulunmayan bir OP konusudur.

Biraz dedektif çalışmadan sonra, this site test edilen siteye çok yakın görünüyor. tam olarak aynı değil, ama doğru fontun sahip olduğu farkı gösterir.

enter image description here

Tabii ki, doğru yazı olmamasından sunucunun çıkışını doğrulayarak durdurmaz.

@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(), "תחנת מידע לסטודנט המכללה האקדמית עמק יזרעאל"); 
} 

hale olamaz seçtiğiniz web istemci çıkışı söz konusu olsa bile, sunucunun çıkış doğru olduğunu doğrulamak için hızlı bir yoldur.

+0

siteyi kullanırken İbranice yazı tipi Tamam. sorunu selenyum'u etkinleştirdiğim zaman - kaynak kodu, İbranice karakterlerin varsayıldığı yerlerin tüm soru işaretleridir. –

+0

ve evet, pratik olarak aynı site. [link] (http://yedion.afeka.ac.il/yedion/fireflyweb.aspx?prgname=login) –

+1

İçeriği * View Source * içinde nasıl göründüğünden bağımsız olarak, çalışma testimi çalıştırmayı denediniz mi (yukarıda) ? Sayfanız, örneğimde Java Unicode karakterleriyle eşleşmesi gereken bir UTF8 İçerik Türü (herhangi bir tarayıcı varsayılanını geçersiz kılan) bildiriyor. Unicode sitelerini uçtan uca test etmek için herhangi bir geçici çözüm/korsana ihtiyacınız olmamalıdır. –

1

Merhaba ben fikri

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.i bir göz

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(); 

    } 
Ben
+0

Harika bir fikir, zaten benzer bir şey denedim. ne yazık ki, WebDriver sürücüsü için çalışmıyor = yeni FirefoxDriver(); . –

+0

ve selenyum Firefox sürücüsü ile çalışmak gerekiyor. –

+0

Teşekkürler @sahar Milis firefox ile denemedim ama firefox için bile çalışacağını düşünüyorum –