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++;
}
}