Selenium FirefoxDriver getText-UTF-8编码

Selenium FirefoxDriver getText-UTF-8编码,selenium,selenium-webdriver,encoding,selenium-firefoxdriver,Selenium,Selenium Webdriver,Encoding,Selenium Firefoxdriver,我在网上搜索了一段时间想退出,但我想不出来 使用FirefoxDriver时,使用Selenium, 无法在文本上执行操作,因为我一直收到????而不是实际的字符 源文件示例: Java代码: 我试着使用我在网上找到的一些个人资料,但没有用 FirefoxProfile profile = new FirefoxProfile(); profile.setPreference( <something>, <something> ); profile.setPrefere

我在网上搜索了一段时间想退出,但我想不出来

使用FirefoxDriver时,使用Selenium, 无法在文本上执行操作,因为我一直收到????而不是实际的字符

源文件示例:

Java代码:

我试着使用我在网上找到的一些个人资料,但没有用

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference( <something>, <something> );
profile.setPreference( <something>, <something> );
driver = new FirefoxDriver( profile );
FirefoxProfile profile=新的FirefoxProfile();
设定偏好(,);
设定偏好(,);
驱动程序=新的Firefox驱动程序(配置文件);
我认为问题在于Firefox的默认编码是“西方的”。
而且我需要它是“UTF-8”,或者根据站点进行更改


我看到的问题的所有答案都没有解决问题。

嗨,我已经为这个问题做了一个变通,想法是

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.我附上了一份工作代码样本,请看一看

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

    }
publicstaticvoidmain(String[]args)抛出IOException、interruptedeexception{
//TODO自动生成的方法存根
System.setProperty(“webdriver.chrome.driver”,“D:\\eclipseProject\\StackOverFlow\\chromedriver\u win32(1)\\chromedriver.exe”);
WebDriver驱动程序=新的ChromeDriver();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.manage().window().maximize();
驱动程序。获取(“https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Ftab%3Dwm");
//在右下角有一个下拉列表,显示不同国家的语言值
//把他们都列在名单里
列出myddval=driver.findElements(By.xpath(“/*[@id='lang-chooser']/option”);
System.out.println(myddval.size());
//将dd中的最后一个值打印到控制台上
System.out.println(“更改前的DD值(ANSI格式):”+myddval.get(myddval.size()-1.getText());//将在控制台中打印
//现在创建一个文本文档,将其内容从ANSI保存为UTF-8格式
writer=新的PrintWriter(“C:\\Users\\rajnish\\Desktop\\name.txt”、“UTF-8”);
//仅在文本文档中写入最后一个值形式dd=繁體中文
write(myddval.get(myddval.size()-1.getText());
System.out.println(“dd中的值为:+myddval.get(myddval.size()-1.getText());
writer.close();
//读取值并在控制台中打印,现在将打印=繁體中文
bufferedReader=new bufferedReader(新文件阅读器(“C:\\Users\\rajnish\\Desktop\\name.txt”);
System.out.println(“将文本转换为UTF-8编码后读取:“+bufferedReader.readLine()”);
//现在执行一些操作
driver.findElement(By.id(“lang选择器”))。单击();
《睡眠》(2000年);
获取(myddval.size()-1);
}

嗨,我已经解决了这个问题,我的想法是

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.我附上了一份工作代码样本,请看一看

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

    }
publicstaticvoidmain(String[]args)抛出IOException、interruptedeexception{
//TODO自动生成的方法存根
System.setProperty(“webdriver.chrome.driver”,“D:\\eclipseProject\\StackOverFlow\\chromedriver\u win32(1)\\chromedriver.exe”);
WebDriver驱动程序=新的ChromeDriver();
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.manage().window().maximize();
驱动程序。获取(“https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F%3Ftab%3Dwm");
//在右下角有一个下拉列表,显示不同国家的语言值
//把他们都列在名单里
列出myddval=driver.findElements(By.xpath(“/*[@id='lang-chooser']/option”);
System.out.println(myddval.size());
//将dd中的最后一个值打印到控制台上
System.out.println(“更改前的DD值(ANSI格式):”+myddval.get(myddval.size()-1.getText());//将在控制台中打印
//现在创建一个文本文档,将其内容从ANSI保存为UTF-8格式
writer=新的PrintWriter(“C:\\Users\\rajnish\\Desktop\\name.txt”、“UTF-8”);
//仅在文本文档中写入最后一个值形式dd=繁體中文
write(myddval.get(myddval.size()-1.getText());
System.out.println(“dd中的值为:+myddval.get(myddval.size()-1.getText());
writer.close();
//读取值并在控制台中打印,现在将打印=繁體中文
bufferedReader=new bufferedReader(新文件阅读器(“C:\\Users\\rajnish\\Desktop\\name.txt”);
System.out.println(“将文本转换为UTF-8编码后读取:“+bufferedReader.readLine()”);
//现在执行一些操作
driver.findElement(By.id(“lang选择器”))。单击();
《睡眠》(2000年);
获取(myddval.size()-1);
}

我99%确定这仅仅是因为OP的客户端机器上没有安装希伯来文字体()

经过一点侦查工作,似乎非常接近正在测试的网站。这并不完全相同,但我认为这显示了正确字体的区别

当然,没有正确的字体并不会阻止您验证服务器的输出

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

是一种快速验证服务器输出是否正确的方法,即使您选择的web客户端无法呈现所述输出。

我99%确定这只是OP没有在其客户端计算机上安装希伯来文字体()的问题

经过一点侦查工作,似乎非常接近正在测试的网站。这并不完全相同,但我认为这显示了正确字体的区别

当然,没有正确的字体并不会阻止您验证服务器的错误