2016-08-08 1 views
1

텍스트 필드의 값을 인쇄하려고합니다. 값이 출력되지 않습니다. 빈 출력을 얻고 있습니다. 비어 있습니다. 텍스트 필드에는 웹 페이지에 값이 있습니다. name_element.get_attribute ('value')를 사용하고 있습니다. 텍스트 필드의 값을 출력해야합니다. 왜 그것이 나를 위해 일하지 않는지 모르겠다.Selenium Python은 get_attribute ('value')를 사용하여 텍스트 필드의 값을 인쇄하고 값을 인쇄하지 않습니다. 공백이 인쇄됩니다.

는 PyCharm에서 콘솔 출력은 다음과 같습니다 다음 라인의 값이 인쇄 name_element.get_attribute에게 ('값')

내가 값을 "데이터 오브젝트 이름을"기대하고을 인쇄되지

print_value_from_name_textfield 이 값은 웹 페이지의 텍스트 필드에있는 값이므로 인쇄하십시오. 나는 빈 출력을 얻고있다.

내 코드는 다음과 같습니다

def print_value_from_name_textfield(self): 
    name_element = self.get_element(*MainPageLocators.data_objects_Name_textfield_edit) 
    print "print_value_from_name_textfield" 
    print name_element.get_attribute('value') 

HTML은 : 텍스트 필드의 ID가 같이 정의된다 MainPageLocators에서

<div class="marginbelow"> 
     <span class="gwt-InlineLabel defaultFormLabelWidthCompact myinlineblock">Name</span> 
     <input id="data_configuration_edit_data_object_tb_name" class="gwt-TextBox" type="text"/> 
    </div> 

:

from selenium.webdriver.common.by import By 
class MainPageLocators(object): 
    data_objects_Name_textfield_edit = (By.ID, 'data_configuration_edit_data_object_tb_name') 

get_element 구현은 다음과 같습니다

# returns the element if found 
def get_element(self, how, what): 
    # params how: By locator type 
    # params what: locator value 
    try: 
     element = self.driver.find_element(by=how, value=what) 
    except NoSuchElementException, e: 
     print what 
     print "Element not found " 
     print e 
     screenshot_name = how + what + get_datetime_now() # create screenshot name of the name of the element + locator + todays date time. This way the screenshot name will be unique and be able to save 
     self.save_screenshot(screenshot_name) 
     raise 
    return element 

내가 뭘 잘못하고있어? 감사합니다, 리아 즈

+0

입력 요소에 속성 값이 표시되지 않습니다. 이것이 공백으로 돌아 오는 이유입니다. – lauda

+0

get_attribute ('value')는 실제 값이 저장되는 속성을 캡처합니다. 텍스트는 innertext를 캡쳐합니다 –

+0

몇 달 전에 텍스트 필드에서 인쇄 된 값을 얻는 방법에 대한 질문을했습니다. 해당 HTML 스 니펫에는 입력 요소에 특성 값이 없습니다. 값은 get_attribute ('value')를 사용하여 인쇄됩니다. 내 다른 질문 링크는 다음과 같습니다. http://stackoverflow.com/questions/31609234/python-selenium-print-out-value-of-textfield-is-showing-empty-the-value-is-not –

답변

1

불행하게도 get_attribute('value')가 작동하지 않는 경우, 아래와 같이 입력 값을 얻을 수 execute_script()를 사용하여 시도 할 수 있습니다 : -

print self.driver.execute_script("return arguments[0].value",name_element) 

편집 : 입력 필드에 값이 잠시 후로드 된 경우, 다음과 같이 입력 요소를 찾기 전에 암시 적 대기를 구현해야합니다.

self.driver.implicitly_wait(10) 

name_element = self.get_element(*MainPageLocators.data_objects_Name_textfield_edit) 
print "print_value_from_name_textfield" 
print name_element.get_attribute('value') 
+0

이제 콘솔에 출력되는 텍스트 필드의 값을 얻었습니다. 당신의 방법이 효과가있었습니다. 고맙습니다.이 요소에 대해 이상한 get_attribute ('value')가 작동하지 않습니다. 그것은 내 다른 요소에 적용됩니다. 대체 해결 방법 ("반환 인수 [0] .value", name_element)가 작동합니다. –

관련 문제