使用WebDriver自动化NonEnglish网站

时间:2014-03-19 19:27:54

标签: java selenium webdriver

我试图自动化一个网站,该网站也有一个链接到其法国网站。当我启动这个法国网站时,所有产品描述,货币等都会变成法语。 我的问题与使用WebDriver自动化这个法语网站有关。

目前Iam将法语单词(产品名称/描述等)作为普通字符串传递给我的Java Selenium代码,它似乎有效。

似乎有效的测试代码:

WebElement el = driver.findElement(By.id("nav-nouveautes"));
String str = el.findElement(By.className("highlight")).getText();

String searchItem = "Tri, table d'appoint, frêne naturel";
driver.findElement(By.id("search")).sendKeys(searchItem);
driver.findElement(By.className("btns search")).click();

这是自动化非英语网站的正确方法 - 按原样传递字符串并以相同方式检索文本吗?在某些链接中,他们提到了将浏览器的区域设置更改为特定语言。这有必要吗? 尝试使用谷歌搜索,但无法找到一个好的答案。

我想使用FitNesse来编写测试

这是html源码的几个片段:

 <label for="search" style="display:none;">Recherche :</label>
    <input id="search" name="q" value="" class="input-text" />
    <!--
    <button type="submit" title="Recherche" class="button"><span><span>Recherche</span></span></button>
    -->
    <button class="btns search" type="submit">
    </button>


 <div id="slide_one" class="xxxxxxWorksSlide">
        <p id="slideOne_title">En boutique, un fauteuil de designer <br> se vend en général</p>
        <span class="price-dashed" id="slideOne_left"></span>        
            <p id="slideOne_price">1 500 €</p>        
        <span class="price-dashed" id="slideOne_right"></span>
        <p id="slideOne_copy">Son design a de quoi vous xxx. Mais sa fabrication coûte seulement 250 €. Soit une marge de 500 %.</p>
        <a id="slideOne_btns" class="btns" title="" href="#"><span class="button_label">xxx change les règles<span class="chevron">»</span></span></a>
    </div>

很抱歉,如果这是一个非常愚蠢的问题。 感谢您查看我的帖子。

3 个答案:

答案 0 :(得分:0)

  

这是自动化非英语网站的正确方法 - 按字母顺序传递字符串并以相同方式检索文本吗?

这不是错误的方式。我个人认为这是最简单的方法,但你需要确保你有UTF-8作为所有文件的编码,否则你会遇到与其他人一起查看文件的问题。< / p>

  

在某些链接中,他们提到了将浏览器的区域设置更改为特定语言。这有必要吗?

仅在您明确测试make sure that the language works when the browsers locale is fr

时才需要

当然,我认为最佳做法是使用该语言打开基本网址。例如:http://example.com?lang=fr

答案 1 :(得分:0)

  

在某些链接中,他们提到了更改浏览器的区域设置   特定的语言。这有必要吗?

在浏览器中设置区域设置将导致它更改随每个请求发送的Accept-Language标头。

这是否会对您的测试产生影响 - 而大多数网站都不会将您从特定版本重定向,如果您具体要求它,他们可能正在使用您的区域设置,从此标题中收集,以不同的格式呈现货币或日期等内容。

有些网站更进一步,例如新的BBC radio player,它只使用区域设置来呈现翻译的内容,而不是使用多个网址。

简而言之,重要性取决于您正在测试的内容(希望您事先了解其功能:))

答案 2 :(得分:0)

要支持多种语言,您可以使用 Java Resource Bundle API 。这样,您只需为每种新语言添加新的资源包文件,而无需更改任何代码。

步骤1)将SITE-LAN​​G作为vmArguments发送到您的测试。

java -DSITE-LANG=fr 

步骤2)在类路径中定义资源包文件MyResources_fr.properties。

mySearchItemKey=Tri, table d'appoint, frêne naturel

步骤3)根据系统属性在beforeSuite或beforeTest期间加载资源包。

String siteLanguage = System.getProperty("SITE-LANG");
ResourceBundle myResources = ResourceBundle.getBundle("MyResources", new Locale(siteLanguage ));

步骤4)删除文本的硬编码并从资源包中访问值。

// Your code will become  
String searchItem = myResources.getString("mySearchItemKey");
driver.findElement(By.id("search")).sendKeys(searchItem);