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
'IT박스' 카테고리의 다른 글
노트북을 Mathematica의 문서 센터에 통합 (0) | 2021.01.08 |
---|---|
오류 : Express에서보기를 조회하지 못했습니다. (0) | 2021.01.08 |
트리거가 테이블에있을 때 OUTPUT 절과 함께 UPDATE를 사용할 수 없습니다. (0) | 2021.01.08 |
참조가 아닌 다차원 배열의 복사본 만들기-JavaScript (0) | 2021.01.08 |
이동 중에 두 맵의 통합 얻기 (0) | 2021.01.08 |