웹앱의 HTML에는 다음 코드가 있습니다.
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
실제로 페이지에 표시되는 것은 시간을 표시하는 문자열입니다.
Selenium Web Driver WebElement
에는 <input>
사용을 참조 하는 객체 가 있습니다.
WebElement timeStamp = waitForElement(By.id("prettyTime"));
의 값 WebElement
, 즉 페이지에 인쇄 된 내용 을 얻고 싶습니다 . 나는 모든 WebElement
게터를 시도했지만 사용자가 보는 실제 값을 검색하지 못했습니다. 도움이 필요하세요? 감사.
답변
시험 element.getAttribute("value")
text
속성은 요소의 태그 내의 텍스트입니다. 입력 요소의 경우 표시된 텍스트는 <input>
태그로 래핑되지 않고 value
속성 내부에 있습니다.
참고 : 케이스가 중요합니다. “Value”를 지정하면 ‘null’값이 반환됩니다. 이것은 적어도 C #의 경우에 해당됩니다.
답변
다음과 같이 할 수 있습니다.
webelement time=driver.findElement(By.id("input_name")).getAttribute("value");
이렇게하면 웹 페이지에 표시되는 시간이 주어집니다.
답변
셀레늄 2를 사용하면
나는 보통 다음과 같이 씁니다.
WebElement element = driver.findElement(By.id("input_name"));
String elementval = element.getAttribute("value");
또는
String elementval = driver.findElement(By.id("input_name")).getAttribute("value");
답변
파이썬 바인딩의 경우 다음과 같습니다.
element.get_attribute('value')
답변
@ragzzy의 대답에 따라 사용
public static string Value(this IWebElement element, IJavaScriptExecutor javaScriptExecutor)
{
try
{
string value = javaScriptExecutor.ExecuteScript("return arguments[0].value", element) as string;
return value;
}
catch (Exception)
{
return null;
}
}
꽤 잘 작동하며 DOM을 변경하지 않습니다.
답변
앞서 언급했듯이 다음과 같이 할 수 있습니다.
public String getVal(WebElement webElement) {
JavascriptExecutor e = (JavascriptExecutor) driver;
return (String) e.executeScript(String.format("return $('#%s').val();", webElement.getAttribute("id")));
}
그러나 보시 id
다시피 요소에는 속성이 있어야 하며 페이지에 jquery도 있어야합니다 .
답변
입력 값이 약간의 지연 시간 (예 : AJAX 호출)이있는 스크립트에 의해 채워지면 입력이 채워질 때까지 기다려야합니다. 예
var w = new WebDriverWait(WebBrowser, TimeSpan.FromSeconds(10));
w.Until((d) => {
// Wait until the input has a value...
var elements = d.FindElements(By.Name(name));
var ele = elements.SingleOrDefault();
if (ele != null)
{
// Found a single element
if (ele.GetAttribute("value") != "")
{
// We have a value now
return true;
}
}
return false;
});
var e = WebBrowser.Current.FindElement(By.Name(name));
if (e.GetAttribute("value") != value)
{
Assert.Fail("Result contains a field named '{0}', but its value is '{1}', not '{2}' as expected", name, e.GetAttribute("value"), value);
}