如何获取子元素的文本

时间:2018-12-28 12:35:56

标签: python selenium-webdriver

this page上,我想输入“已查找”或“消失”,单击“将单词放大空间”按钮,然后在结果页面上找到“分析结果”。我有执行所有操作的代码,但无法隔离结果。

Original Text    Analysis Result
-------------    ---------------
looked           look
gone             go

这是“ looked”的HTML结果:

<div class="span5 offset1">
    <h4>Original Text</h4>
    <p>
    looked
    </p>
</div>
<div class="span5">
    <h4>Analysis Result</h4>
    <p>
    look
    </p>
</div>

这是我的代码

array = []
myText = ["looked", "gone"]  # I post this array to website.

for a in range(0, len(myText)):

    x = driver.find_element_by_class_name("span5")
    array.append(x.text)

print b -> [u'Original Text\nlooked', u'Original Text\ngone']

我如何只获得结果,“看”或“去”?

4 个答案:

答案 0 :(得分:1)

答案是: 找到所有包含特定类和子p标签的元素

element = driver.find_element_by_xpath('//div[contains(@class, 'span5')]/p')
text = element.text

答案 1 :(得分:1)

您还可以为此使用以下CSS选择器:

...
text = driver.find_element_by_css_selector(".span5>p").text
...

您可以优化代码:

array = []
elements = driver.find_elements_by_css_selector(".span5>p")

for element in elements:

    array.append(element.text)

或更多Pythonic:

array = [element.text for element in elements]

希望对您有帮助!

答案 2 :(得分:0)

将以下数组发布到网站时:

myText = ["looked", "gone"] 

根据结果HTML DOM提取文本,例如外观继续等,您可以使用以下解决方案:

my_elements = driver.find_elements_by_css_selector("div.span5:not(.offset1) p")
my_array = [my_element.text for my_element in my_elements]
print(my_array)

答案 3 :(得分:-1)

我假设div元素是另一个实体的子元素,这是在Java中,也许您知道如何在Python中创建它。我创建了一个基于className和tagName的WebElement列表-在您的情况下为p标签,此后我将打印结果。

List<WebElement> listofWords= driver.findElement(By.className("other_entity_ClassName_or_something_else")).findElements(By.tagName("p"));
    for (int i = 0; i < listofWords.size(); i++) {
        System.out.println(listofWords.get(i).getText());
    }

谢谢