Selenium在java上失败(速度问题)

时间:2013-09-17 20:00:25

标签: selenium

如果我运行该文件的HTML版本,它可以在慢速模式下运行(但快速失败)。

我尝试对java使用setspeed方法,但这不起作用(可能是因为它在以后的版本中被折旧)。然后我尝试添加手动线程重量时间(在它失败的位置之前),但它也失败了。

无论如何,这是我的java代码:

import com.thoughtworks.selenium.Selenium;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.WebElement;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.thoughtworks.selenium.SeleneseTestBase;

public class tradePagesNotLoad extends SeleneseTestBase{
private Selenium selenium;

@Before
public void setUp() throws Exception {
    WebDriver driver = new FirefoxDriver();
    String baseUrl = "http://www.fsdafdscsa.com/";
    selenium = new WebDriverBackedSelenium(driver, baseUrl);
}

@Test
public void testA9() throws Exception {
    selenium.open("");
    selenium.click("link=Sign In");
    selenium.waitForPageToLoad("30000");
    selenium.type("id=login_username", "fsadfsa");
    selenium.type("id=login_password", "asweqr");
    selenium.click("name=login_button");
    selenium.waitForPageToLoad("30000");
    verifyTrue(selenium.isElementPresent("link=Sign Out"));
    selenium.click("link=Trade");
    selenium.waitForPageToLoad("30000");
    String sellButtonText = selenium.getText("xpath=(//button[@type='button'])[7]");
    System.out.println(sellButtonText);


    assertNotEquals("Loading...", selenium.getEval("storedVars['sellButtonText']"));
    String buyButtonText = selenium.getText("xpath=(//button[@type='button'])[8]");
    System.out.println(buyButtonText);
    assertNotEquals("Loading...", selenium.getEval("storedVars['buyButtonText']"));
    String bidPrice = selenium.getText("id=pretty_bid_price");
    System.out.println(bidPrice);
    assertNotEquals("Loading...", selenium.getEval("storedVars['bidPrice']"));
    String askPrice = selenium.getText("id=pretty_ask_price");
    System.out.println(askPrice);
    assertNotEquals("Loading...", selenium.getEval("storedVars['askPrice']"));
}

@After
public void tearDown() throws Exception {
    selenium.stop();
}
}

代码在第一个assertNotEquals失败。任何建议,将不胜感激。

3 个答案:

答案 0 :(得分:0)

我对Java和Selenium不太熟悉,但对我而言,您似乎正在尝试访问存储在字符串中的storedVars数组中的某些内容:

String sellButtonText = selenium.getText("xpath=(//button[@type='button'])[7]");

然后再

assertNotEquals("Loading...", selenium.getEval("storedVars['sellButtonText']"));

如果你想使用selenium.store数组,你不应该使用像storedVars这样的东西吗?

答案 1 :(得分:0)

在我的java自动化框架中,我使用WebDriver $ Timeouts.class接口 - implicitlyWait(长时间,TimeUnit单元)方法。在您的情况下,恰好在初始化对象Webdriver的实例后,粘贴以下代码:

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

此方法指定驱动程序在搜索元素时应等待的时间(如果不是立即存在)。

希望这有帮助。

答案 2 :(得分:0)

尝试动态等待页面上的内容加载。

OrderController

然后也按照答案之一中的说明尝试。

selenium.wait("id=login_username")

您可以通过增加秒数来进行游戏。取决于页面加载所需的sla。即,某些页面的加载时间可能超过30秒。