Selenium WebDriver从输入字段获取文本

时间:2016-03-24 14:32:22

标签: selenium

我正在编写一个测试来断言<input>标记内的默认文本值。但是,它不是在打球:

Assert.assertThat(webDriver.findElement(By.id("inputTag")).getText(), Matchers.is("2"));

2 个答案:

答案 0 :(得分:11)

这是value元素 - 您需要获取webDriver.findElement(By.id("inputTag")).getAttribute("value") 属性:

    public class ModelRepository<T>
    where T : class
{
    ModelDbContext ctx = new ModelDbContext();
    public IQueryable<T> GetAll()
    {
        IQueryable<T> query = ctx.Set<T>();
        return query;
    }

    public void Add(T entity)
    {
        ctx.Set<T>().Add(entity);
        ctx.SaveChanges();
    }

    public void Delete(T entity)
    {
        ctx.Set<T>().Remove(entity);
        ctx.SaveChanges();
    }

答案 1 :(得分:0)

我找到的最可靠的解决方案是执行JavaScript脚本,并从JavaScript返回HTMLInputElement的value属性。

我已经以多种方式对此进行了测试,即使更改了输入字段的值,该值也始终是正确的。

PHP

$input = $driver->findElement( WebDriverBy::id( 'inputTag' ) );
$value = $driver->executeScript( 'return arguments[0].value', $input );
// A custom PHP function that returns the value of an input field:
function getValue(RemoteWebDriver $driver, WebDriverBy $by ) {
    return $driver->executeScript( 
        'return arguments[0].value', 
        $driver->findElement( $by ) 
    );
}

// Sample usage:
$value = getValue( $driver, WebDriverBy::id( 'inputTag' ) );

Java

JavascriptExecutor js = (JavascriptExecutor) driver;  

WebElement inpElement = driver.findElement(By.id("inputTag"));
String value = js.executeScript("return arguments[0].value", inpElement);