2013-07-30 104 views
1

我有一个自动化聊天应用程序的任务。我正在使用Webdriver和Java。两个不同的用户将在两个不同的浏览器上同时登录并发起聊天。如果有人能提供一些建议,我将不胜感激。如何使用Selenium/Webdriver自动化聊天应用程序?

+0

什么是你想要的应用程序实现自动化?你能否提供网址... – Vinay

+0

嗨维奈,我非常抱歉,因为我无法提供你的网址,因为它对我们公司来说是非常保密的。例如,只需要一个GTalk聊天应用程序的例子。我需要自动化两个用户将使用它的方式。 – user1728406

回答

1

如果你不必在同一个浏览器上测试它,那么请参阅这篇文章,了解如何打开多个浏览器窗口进行测试 - How to switch instances in WebDriver

+0

它工作的任何示例代码?,我有相同的情况来测试一个聊天应用程序。 – sasikumar

7

您有两个担心需要担心。第一个是确保你为每个用户使用不同的浏览器,第二个是同时运行这两个用户。有几种不同的方法可以完成它们,所以我会分别查看它们。

管理两个浏览器

的第一部分,即开口的两个浏览器,并不太难;您可以为每个对象创建一个单独的WebDriver对象。您可能需要使用两个不同的浏览器,但是,以避免任何形式的会话共享问题:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 

WebDriver user_1 = new FirefoxDriver(); 
WebDriver user_2 = new ChromeDriver(); 

如果您需要打开同一浏览器的两个实例,你最好的选择是使用Selenium Grid托管您所需浏览器,然后创建远程连接到他们:

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.openqa.selenium.remote.DesiredCapabilities; 

DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
URL server = new URL("http://your-server-location.com"); 
WebDriver driver = new RemoteWebDriver(server, capabilities); 

如果你不想建立自己的硒网格,您可以使用服务像Sauce Labs来管理你(和也给你一个简单的添加额外测试平台资源的方式)。

管理两个用户同时

这听起来像你可以有一个测试类表演又将对相关webdriver的每个动作。使用类似Page Object Model的东西来提供表示页面的服务对象,您也可以传递WebDriver的一个实例。然后,您可以更加流利地表达你的测试逻辑而不是处理不同webdrivers和元素:

public class Chatsite{ 
    public WebDriver driver; 
    private WebElement talkbox; 
    private WebElement chatlog; 
    private WebElement sendbutton; 

    public Chatsite(WebDriver passed_in_driver){ 
     driver = passed_in_driver; 
     talkbox = driver.find_element("name", "talkbox"); 
     sendbutton = driver.find_element("name", "send"); 
     chatlog = driver.find_element("name", "chatlog"); 
     driver.get("http://www.yoursite.com"); 
    } 

    public void say(String string_to_type){ 
     talkbox.send_keys(string_to_type); 
     sendbutton.click(); 
    } 

    public void sees_in_the_chatlog(String expected_content){ 
     String current_chat_text = chatlog.getText(); 
     assertTrue("Couldn't find content", current_chat_text.contains(expected_content)); 
    } 
} 

#Now, in your tests 
#Name your users so it's easier to keep track of them 
Chatsite david = Chatsite.new(user_1); 
Chatsite susan = Chatsite.new(user_2); 

david.say("Isn't it a fine day?"); 
susan.sees_in_the_chatlog("Isn't it a fine day?"); 

susan.say("If you're going to talk about the weather I'm failing this test case"); 
## And so on in that fashion 
+0

谢谢你的建议。我在做这个工作。但是,两个聊天窗口作为不同的Web窗口打开,我无法选择第二个用户的窗口,因此无法在此处声明消息到达。任何帮助? – user1728406

+0

您是否在Windows中使用了两个不同的WebDriver对象? –