0

그래서 작성된 테스트가 실행되고 테스트는 실행되고 SeleniumChromeDriver을 사용하면 정상적으로 작동합니다. 나는 FirefoxDriver에서 작동하는 테스트를받는 것으로 임명되었습니다.Serenium Firefox 드라이버에서 WebElement의 GetAttribute가 빈 값으로 반환됩니다.

테스트의 일부로 로그인 필드에 텍스트를 입력 한 다음 로그인 필드가 입력되었는지 확인합니다. 우리가 현장을 확인하는 방법은이 Chrome에서 완벽하게 잘 작동이

public virtual string Text => WebElement.GetAttribute("value"); 
while (!Text.Equals(inputText) && count++ < 3) 

같다. 그러나 그것은 Firefox에 없습니다. 테스트를 디버그하면 Text""이거나 비어 있거나 비어있는 것으로 나타납니다. 파이어 폭스를 열면 이걸 할 수 있고 document.getElementById("login").value이며 올바른 값을 반환합니다.

FirefoxDriver에 다르게 구현 된 WebElement.GetAttribute입니까?

답변

2

귀하의 경우 왜 Firefox에서 작동하지 않는지 말하기 어렵지만 브라우저 간에는 다른 구현이 없습니다. 당신은 다음과 같이 대신 IJavascriptExecutor를 사용하여 다른 솔루션을 시도 할 수 있습니다 : -

IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
string Text = (string)js.ExecuteScript("return arguments[0].value", WebElement); 
1

셀레늄 프로토콜을 속성/속성을 얻기 위해 셀레늄과 진화 3. 셀레늄이와

는 방법은 HTMLElement 재산 때를 반환 WebElement.GetAttribute(...) 현재 및 속성을 표시합니다. 당신이 geckodriver를 사용하고있는 것으로 보인다 https://www.w3.org/TR/webdriver/#get-element-property

귀하의 경우에는 셀레늄 제한 클라이언트와 (셀레늄 3) : 셀레늄 3

는 속성의 속성 하나를 얻기 위해 특유의 명령있다 2 사양. 재산이 반환되지 않는 이유를 설명합니다.

는 V3.0.0 - 베타에 C#을 클라이언트를 업그레이드 할 수 있습니다, 그것이 작동되도록하려면 https://github.com/SeleniumHQ/selenium/blob/master/dotnet/CHANGELOG https://github.com/SeleniumHQ/selenium/commit/a573338f7f575ccb0069575700f2c059dc94c3b8

또는 당신은 방법 확장에 자신의 GetProperty을 구현할 수 있습니다

static string GetProperty(this IWebElement element, string property) { 
    var driver = (RemoteWebDriver)((RemoteWebElement)element).WrappedDriver; 
    var result = (IList)driver.ExecuteScript(@" 
     var element = arguments[0], property = arguments[1]; 
     if (property in element) return [true, '' + element[property]]; 
     return [false, 'Missing property: ' + property]; 
     ", element, property); 

    bool succeed = (bool)result[0]; 
    if (!succeed) throw new WebDriverException((string)result[1]); 

    return (string)result[1]; 
} 

사용법 :

string value = driver.FindElement(...).GetProperty("value"); 
+0

이는 의미가 있습니다. geckodriver와 Selenium 3.0 beta2를 사용했지만 Visual Studio에서 GetProperty가 무효하다는 말을 계속해서 들었습니다. Saurabh Gaur의 게시물에서 Javascript를 사용해야했습니다. – Cistoran