[python] 모든 자식 요소 가져 오기

Python과 Selenium에서 WebElement의 모든 자식을 목록으로 가져올 수 있습니까?



답변

예, find_elements_by_css_selector("*")또는로 달성 할 수 있습니다 find_elements_by_xpath(".//*").

그러나 이것은 요소의 모든 자식 을 찾는 데 유효한 사용 사례처럼 들리지 않습니다 . 모든 직간접 적 자녀를 얻는 것은 비용이 많이 드는 작업입니다. 무엇을하려고하는지 자세히 설명해주십시오. 더 나은 방법이 있어야합니다.

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.stackoverflow.com")

header = driver.find_element_by_id("header")

# start from your target element, here for example, "header"
all_children_by_css = header.find_elements_by_css_selector("*")
all_children_by_xpath = header.find_elements_by_xpath(".//*")

print 'len(all_children_by_css): ' + str(len(all_children_by_css))
print 'len(all_children_by_xpath): ' + str(len(all_children_by_xpath))


답변

예,을 사용 find_elements_by_하여 하위 요소를 목록으로 검색 할 수 있습니다 . 여기에서 파이썬 바인딩을 참조하십시오. http://selenium-python.readthedocs.io/locating-elements.html

HTML 예 :

<ul class="bar">
    <li>one</li>
    <li>two</li>
    <li>three</li>
</ul>

다음 find_elements_by_과 같이 사용할 수 있습니다 .

parentElement = driver.find_element_by_class_name("bar")
elementList = parentElement.find_elements_by_tag_name("li")

특정 사례에 대한 도움이 필요한 경우 부모 및 자식 요소를 가져 오려는 HTML로 게시물을 편집 할 수 있습니다.


답변

또 다른 존경심 find_elements_by_xpath(".//*")은 다음과 같습니다.

from selenium.webdriver.common.by import By


find_elements(By.XPATH, ".//*")


답변

다음은 자식 요소를 가져 오는 코드입니다 (Java에서).

String childTag = childElement.getTagName();
if(childTag.equals("html"))
{
    return "/html[1]"+current;
}
WebElement parentElement = childElement.findElement(By.xpath(".."));
List<WebElement> childrenElements = parentElement.findElements(By.xpath("*"));
int count = 0;
for(int i=0;i<childrenElements.size(); i++)
{
    WebElement childrenElement = childrenElements.get(i);
    String childrenElementTag = childrenElement.getTagName();
    if(childTag.equals(childrenElementTag))
    {
        count++;
    }
 }


답변