Estou convertendo um antigo conjunto de testes Selenium/C# para Playwright/C# e está indo muito bem, exceto por um pequeno problema, que é...
No pacote Selenium, este código retorna corretamente o valor de uma caixa de texto
var tValue = Driver.FindElement(locator).GetDomProperty("value") ?? "";
No entanto, este código no novo conjunto Playwright ao executar o mesmo teste não retorna nada
var tValue = await locator.GetAttributeAsync("value") ?? "";
Isso funciona bem para esses atributos, apenas o valor do atributo está falhando, embora funcione na versão Selenium.
tValue = await locator.GetAttributeAsync("type") ?? "";
tValue = await locator.GetAttributeAsync("class") ?? "";
tValue = await locator.GetAttributeAsync("id") ?? "";
Alguma ideia, por favor?
Você estaria procurando por inputValueAsync
De modo geral, o atributo de um elemento não é o mesmo que sua propriedade, e é a
value
propriedade que mais importa durante os testes (se você acabou de causar uma ação para alterá-lo, como.fill()
).O atributo é útil para definir o valor inicial da propriedade, caso seja isso que você precisa testar.
Observe que o método Selenium é GetDom Property () e não GetDom Attribute ().
Veja também a nota sobre a afirmação direta do valor, caso esse seja seu objetivo:
Mais uma coisa, você precisa colocar a
await
expressão entre colchetes ao aplicar o operador de coalescência nula (??) em linha.Obrigado por todas as dicas e sugestões, elas me levaram à resposta que é ...
var tValue = locator.InputValueAsync().Result;
Resolvido, muito obrigado