在Selenium,Python中找到下一个兄弟姐妹



我需要先前选择的元素的兄弟姐妹。

例如:

<div class="dt">Technology</div>
<div class="da">GSM / CDMA / HSPA / EVDO / LTE</div>
<div class="dt">Dimensions</div>
<div class="da">149.9 x 70.4 x 7.8 mm (5.90 x 2.77 x 0.31 in)</div>
<div class="dt">Weight</div>
<div class="da">157 g (5.54 oz)</div>
<div class="dt">Build</div>
<div class="da">Back glass (Gorilla Glass 5), aluminum frame    </div>
<div class="dt">Type</div>
<div class="da">Dynamic AMOLED capacitive touchscreen, 16M colors</div>
<div class="dt">SIM</div>
<div class="da">Single SIM (Nano-SIM) or Hybrid Dual SIM)</div>

说我需要"尺寸"并输入。

代码:

dts = browser.find_elements_by_class_name("dt");
for dt in dts :
    if dt.("innerText") == "Dimensions":
        print(dt.("innerText") + "-" + dt.**FollowingSibling**())
    if dt.("innerText") == "Type":
        print(dt.("innerText") + "-" + dt.**FollowingSibling**())

预期输出:

Dimensions - 149.9 x 70.4 x 7.8 mm (5.90 x 2.77 x 0.31 in)
Type - Dynamic AMOLED capacitive touchscreen, 16M colors

您可以使用text属性或innerText作为您的愿望。在代码下方尝试。

for dt in dts :
    if dt.text == "Dimensions":
        print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
    if dt.text == "Type":
        print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)

dts = browser.find_elements_by_class_name("dt");
for dt in dts :
    if dt.get_attribute("innerText")== "Dimensions":
        print(dt.get_attribute("innerText") + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
    if dt.get_attribute("innerText") == "Type":
        print(dt.get_attribute("innerText") + "-" + dt.find_element_by_xpath("./following-sibling::div").text)

输出:

Dimensions-149.9 x 70.4 x 7.8 mm (5.90 x 2.77 x 0.31 in)
Type-Dynamic AMOLED capacitive touchscreen, 16M colors

尝试以下代码(xpath查找元素(:

dts = browser.find_elements_by_class_name("dt");
for dt in dts :
    if dt.("innerText") == "Dimensions":
        print(dt.("innerText") + "-" + dt.xpath("//div[contains(.,'Dimensions')]/following-sibling::div").text)
    if dt.("innerText") == "Type":
        print(dt.("innerText") + "-" + dt.xpath("//div[contains(.,'Type')]/following-sibling::div").text)

用于查找元素的以下同胞,您可以使用CSS选择器或XPath。使用XPath,您可以在不知道/匹配上一个元素的定位器的情况下找到兄弟姐妹元素。但是,如果您使用CSS选择器,则必须将选择器用于元素的同级元素。

XPATH

dts = browser.find_elements_by_class_name("dt");
for dt in dts :
    if dt.text == "Dimensions":
        print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
    if dt.text == "Type":
        print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)

CSS选择器

dts = browser.find_elements_by_class_name("dt")
das = browser.find_elements_by_css_selector(".dt + div")
for i in range(0, len(dts) :
    if dt.index(i).text == "Dimensions":
        print(dt.indext(i).text + "-" + da.index(i).text)
    if dt.index(i).text == "Type":
        print(dt.index(i).text + "-" + da.index(i)..text)

CSS选择器只会找到带有DT类标签的DIV。它将在您给定的情况下工作,因为所有divs都带有DT类,然后是带有包含值的DIV。

最新更新