gpt4 book ai didi

javascript - Selenium JavascriptExecutor 计算

转载 作者:行者123 更新时间:2023-11-29 15:31:00 26 4
gpt4 key购买 nike

我尝试在 JavaScriptExecutor 上做一个例子。

测试站点是:http://www.anaesthetist.com/mnm/javascript/calc.htm

测试场景为:3+9=12(加法)

我写了下面的代码,但没有用。我调试了代码,结果在页面上看到了 12,但在断言点,我从 .getText() 方法获得了空值。

这是我的代码:

public class CalculatorExampleTest {
static WebDriver driver;
private static String url = "http://www.anaesthetist.com/mnm/javascript/calc.htm";

//Setup Driver
@BeforeClass
public static void setupTest() {
driver = new FirefoxDriver();
driver.navigate().to(url);
driver.manage().window().maximize();
}

@Test
public void calculatorJavaScriptTest() {
//Declare a Webdriver Wait
WebDriverWait wait = new WebDriverWait(driver, 10);

//1-) Click "9"
driver.findElement(By.cssSelector("input[type='button'][onclick='AddDigit(\\'9\\')']")).click();

//2-) Click "+"
driver.findElement(By.cssSelector("input[type='button'][onclick='Operate(\\'+\\')']")).click();

//3-) Click "3"
driver.findElement(By.cssSelector("input[type='button'][onclick='AddDigit(\\'3\\')']")).click();

//4-) Declare JavaScriptExecutor and call "Calculate()" function
JavascriptExecutor js =(JavascriptExecutor)driver;
js.executeScript("Calculate();");

//driver.findElement(By.cssSelector("input[type='button'][onclick='Calculate()']")).click();

//5-) Check result is 12?
//Wrapped Anonymous Class (Synchronization)
wait.until(textDisplayed(By.cssSelector("input[name='Display']:nth-child(1)"),"12"));

WebElement result = driver.findElement(By.cssSelector("input[name='Display']:nth-child(1)"));
assertThat(result.getText(), is("12"));

}

//Wrapped Anonymous Class
private ExpectedCondition<Boolean> textDisplayed (final By elementFindBy, final String text){
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver webDriver) {
return webDriver.findElement(elementFindBy).getText().contains(text);
}
};
}

//Close Driver
@AfterClass
public static void quitDriver() {
driver.quit();
}

最佳答案

由于这是 input 元素,您需要获取 value 属性值而不是文本:

WebElement result = driver.findElement(By.cssSelector("input[name=Display]"));
assertThat(result.getAttribute("value"), is("12"));

关于javascript - Selenium JavascriptExecutor 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com