我遇到了一个基础页面的情况HTML不包含readonly文本框中包含的值。在浏览器中,文本框显示包含文本“A504Y”。
我使用Webdriver查找与文本框关联的文本。当然,我的第一种方法是使用.text方法读取与文本框关联的文本:
string text = Web.Browser.FindElement(By.Id(ProductVariantCodeId)).Text;
但是,这不起作用,返回的文本字符串为空值。
检查元素(使用Chrome)显示要由以下代码定义的元素:
<input id="ProductVariantCode" type="text" data-bind="value: ProductVariantCode, attr: {placeholder: ProductVariantCodePlaceHolder}, inputValidation: { }" disabled="disabled" class="disabled" placeholder="Auto Generated" >
请注意,文本“A504Y”未出现在代码中,这可以解释为什么Webdriver无法看到它。但是我的同事建议使用以下Webdriver代码来查找值:
string text = Web.Browser.FindElement(By.Id(ProductVariantCodeId)).GetAttribute("value");
这很有用。
我不确定为什么在检查时显示的HTML中不存在'A504Y'文本。如果有人可以解释这一点,请解释一下。谢谢。
答案 0 :(得分:0)
.Text属性引用html元素的innerText。 GetAttribute(“value”)获得了文本框中实际包含的文本。 “Value”定义了GetAttribute方法的访问权限。
我猜你在使用C#? api文档可能值得一看,以备将来参考。
http://selenium.googlecode.com/git/docs/api/dotnet/index.html
答案 1 :(得分:0)
首先获取元素,然后尝试 -
String s = element.getattribute(&#34; placeholder&#34;);
&安培;你将在字符串中获得该值。 看起来像A504Y&#39;是文本字段中自动生成的占位符