IT박스

webdriver에서 요소의 현재 내용을 어떻게 얻을 수 있습니까?

itboxs 2021. 1. 8. 08:00
반응형

webdriver에서 요소의 현재 내용을 어떻게 얻을 수 있습니까?


나는 이것에 대해 잘못된 생각을하고있는 것 같다.

Webdriver / Selenium 2로 액세스하는 페이지에서 요소 (이 경우 폼 필드)의 내용을 가져오고 싶습니다.

내 깨진 코드는 다음과 같습니다.

 Element=driver.find_element_by_id(ElementID)
 print Element
 print Element.text

결과는 다음과 같습니다.

<selenium.webdriver.remote.webelement.WebElement object at 0x9c2392c>

(빈 줄에 유의하십시오) .sendkeys를 사용하여 이전 명령으로 요소를 채우고 스크립트가 실행되는 동안 실제 웹 페이지에서 볼 수 있기 때문에 요소에 내용이 있음을 알고 있습니다.

하지만 콘텐츠를 다시 데이터로 가져와야합니다.

이것을 읽으려면 어떻게해야합니까? 다양한 유형의 요소에서 콘텐츠를 가져올 수 있도록 일반적으로 사용하는 것이 좋습니다.


나는 prestomanifesto가 올바른 길을 가고 있다고 믿습니다. 어떤 요소인지에 따라 다릅니다. element.get_attribute('value')입력 요소 를 사용 하고 요소 element.text의 텍스트 노드를 반환해야합니다.

WebElement 개체를 확인하여 element.tag_name어떤 종류의 요소인지 확인 하고 적절한 값을 반환 할 수 있습니다.

다음을 파악하는 데 도움이됩니다.

driver = webdriver.Firefox()
driver.get('http://www.w3c.org')
element = driver.find_element_by_name('q')
element.send_keys('hi mom')

element_text = element.text
element_attribute_value = element.get_attribute('value')

print element
print 'element.text: {0}'.format(element_text)
print 'element.get_attribute(\'value\'): {0}'.format(element_attribute_value)
driver.quit()

element.get_attribute('innerHTML')

내 대답은이 대답을 기반으로합니다 . 복사-붙여 넣기처럼 webdriver에서 요소의 현재 내용을 어떻게 얻을 수 있습니까 ?

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://www.w3c.org')
element = driver.find_element_by_name('q')
element.send_keys('hi mom')

element_text = element.text
element_attribute_value = element.get_attribute('value')

print (element)
print ('element.text: {0}'.format(element_text))
print ('element.get_attribute(\'value\'): {0}'.format(element_attribute_value))


element = driver.find_element_by_css_selector('.description.expand_description > p')
element_text = element.text
element_attribute_value = element.get_attribute('value')

print (element)
print ('element.text: {0}'.format(element_text))
print ('element.get_attribute(\'value\'): {0}'.format(element_attribute_value))
driver.quit()

나는 당신이 "contents"라고 말했을 때 당신이 이것을 의미하는 것이 아니라는 것을 압니다. 그러나 만약 당신이 webelement의 모든 속성의 모든 값을 찾고 싶다면 이것은 파이썬에서 자바 스크립트를 사용하는 아주 멋진 방법입니다 :

everything = b.execute_script(
    'var element = arguments[0];'
    'var attributes = {};'
    'for (index = 0; index < element.attributes.length; ++index) {'
    '    attributes[element.attributes[index].name] = element.attributes[index].value };'
    'var properties = [];'
    'properties[0] = attributes;'
    'var element_text = element.textContent;'
    'properties[1] = element_text;'
    'var styles = getComputedStyle(element);'
    'var computed_styles = {};'
    'for (index = 0; index < styles.length; ++index) {'
    '    var value_ = styles.getPropertyValue(styles[index]);'
    '    computed_styles[styles[index]] = value_ };'
    'properties[2] = computed_styles;'
    'return properties;', element)

을 사용하여 추가 데이터를 얻을 수도 있습니다 element.__dict__.

나는 이것이 웹 요소에서 얻고 자하는 모든 데이터에 관한 것이라고 생각합니다.


Java에서는 Webelement.getText () 입니다. 파이썬에 대해 잘 모르겠습니다.

ReferenceURL : https://stackoverflow.com/questions/10251525/how-can-i-get-the-current-contents-of-an-element-in-webdriver

반응형