:
def get_element_dom_info(@e)
if @e.class != Selenium::WebDriver::Element
raise "No valid element passed: #{@e.class}"
end
@attrs = ['id', 'class', 'title', 'href', 'src', 'type', 'name']
return "<" + @e.tag_name + @attrs.map{ |x| " #{x}='#{@e.attribute(x)}'" if @e.attribute(x) && @e.attribute(x) != "" }.join('') + ">"
end
물론 매개 변수로 전달되는 단일 매개 변수는 실제 Selenium 요소입니다. 또한 모든 가능한 속성을 포함하지는 않지만, 대부분 속성입니다 (필요할 경우 언제든지 추가 속성을 추가 할 수 있습니다).
나는이 같은 일부 코드를 통해이 문제를 통합 할 수 있습니다 가정 :
def clickElement(*args)
... # parse vars
@e = @driver.find_element(...)
puts get_timestamp + " Clicked on Element: " + get_element_dom_info(@e)
end
나는 최근에 내가 네이티브 자바 스크립트를 사용하여 요소의 전체 HTML을 얻을 수 있다는 것을 깨달았 UPDATE (오 드를!). "outerHTML"을 얻으려면 해킹을 사용해야합니다. 여기 내 새로운 방법이 있습니다 :
def get_element_dom_info(how, what)
e = @driver.find_element(how, what)
# Use native javascript to return element dom info by creating a wrapper
# that the element node is cloned to and we check the innerHTML of the parent wrapper.
return @driver.execute_script("var f = document.createElement('div').appendChild(arguments[0].cloneNode(true)); return f.parentNode.innerHTML", e)
end
아니요, 이것은 아닙니다. 이 요소는 예제를 통해서만 입력합니다. 일부 요소는 '클래스'또는 'id'속성을 가질 수도 있습니다. 일부는 – ShockwaveNN
을 갖지 않을 수도 있습니다. 그러나 나는 이것이 당신이 얻는 것만 큼 가까운 것이라고 생각합니다. – pguardiario