Selenium WebDriver를 사용한HTML 입력값 취득
웹 애플리케이션의 HTML에는 다음과 같은 코드가 있습니다.
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
실제로 시간을 표시하는 문자열이 페이지에 표시됩니다.
Selenium WebDriver에는WebElement
참조하는 오브젝트<input>
사용:
WebElement timeStamp = waitForElement(By.id("prettyTime"));
나는 그 가치를 얻고 싶다.WebElement
또는 페이지에 인쇄되어 있는 것을 나타냅니다.다 해봤는데WebElement
getters 및 아무것도 사용자에게 표시되는 실제 값을 검색하지 않았습니다.
해라element.getAttribute("value")
그text
property는 요소의 태그 내의 텍스트입니다.입력 요소의 경우 표시되는 텍스트는 다음과 같이 줄바꿈되지 않습니다.<input>
태그가 아닌 내부로 들어갑니다.value
기여하다.
주의: 대소문자는 중요합니다."Value"를 지정하면 "null" 값이 반환됩니다.이것은 적어도 C#에 해당됩니다.
다음과 같이 할 수 있습니다.
webelement time = driver.findElement(By.id("input_name")).getAttribute("value");
그러면 웹 페이지에 표시되는 시간을 알 수 있습니다.
Python 바인딩의 경우 다음과 같습니다.
element.get_attribute('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");
앞에서 설명한 바와 같이 다음과 같은 작업을 수행할 수 있습니다.
public String getVal(WebElement webElement) {
JavascriptExecutor e = (JavascriptExecutor) driver;
return (String) e.executeScript(String.format("return $('#%s').val();", webElement.getAttribute("id")));
}
하지만 보다시피, 당신의 요소는id
속성 및 페이지에 jQuery를 입력합니다.
래지의 대답에 따라 저는
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 는 변경되지 않습니다.
사용하다
element.GetAttribute("value");
HTML DOM에 "value" 속성이 표시되지 않더라도 GUI에 필드 값이 표시됩니다.
입력값이 지연이 포함된 스크립트(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);
}
Java 사용자:
페이지에 인쇄된 내용을 가져오려면 getText() 메서드를 사용해야 합니다.
getText() 메서드
getText() 메서드는 웹 요소의 표시 가능한 내부 텍스트를 반환합니다.
getAttribute() 메서드
한편, getAttribute() 메서드는 취득하는 Atribute의 값을 가져옵니다.
예:
<input name="Title" type="text" value="LambdaTest" /> Welcome to LambdaTest </input>
getText()
driver.findElement(By.name("Title")).getText();
위 코드 출력 => 람다에 오신 것을 환영합니다시험
getAttribute():
driver.findElement(By.name("Title")).getAttribute("value");
위 코드 출력 => 람다시험
driver.findElement(By.name("Title")).getAttribute("type");
위 코드 => 텍스트 출력
출처: Selenium WebDriver의 getText()와 getAttribute()의 차이점
이건 좀 엉터리지만 효과가 있어요.
나는 사용했다JavascriptExecutor
그리고 a를 추가했다.div
HTML로 변경했습니다.div
로.$('#prettyTime').val()
그리고 셀레늄을 이용해서 그 광경을 찾아냈죠div
그 가치를 잡습니다.값의 정확성을 테스트한 후 방금 만든 div를 제거했습니다.
언급URL : https://stackoverflow.com/questions/7852287/using-selenium-webdriver-to-retrieve-the-value-of-an-html-input
'programing' 카테고리의 다른 글
Intelij에서 Java 애플리케이션 실행 중, HikariPool-1 - 시작 중 (0) | 2022.10.07 |
---|---|
컬러 앱바가 완전히 흰색 Vuetify로 표시됨 (0) | 2022.10.07 |
배열 선두에 javascript 푸시 요소 (0) | 2022.10.07 |
PHP로 이메일을 보내려면 어떻게 해야 하나요? (0) | 2022.10.07 |
테이블에 아직 없는 값을 삽입합니다. (0) | 2022.10.07 |