Python和Selenium获取特定html单元的值

时间:2019-02-18 22:22:52

标签: python selenium selenium-webdriver selenium-chromedriver

我想使用python和selenium获取html表格中单元格的文本,但出现此错误:

  

消息:否这样的元素:无法找到元素:   {“方法”:“名称”,“选择器”:“ ctl00_ContentPlaceHolder1_ctl02_tblHistorico”}

html:

<div id="ctl00_ContentPlaceHolder1_ctl02_divTabelaHistorico">
    <br />
    <table id="ctl00_ContentPlaceHolder1_ctl02_tblHistorico" class="tablefq" width="100%" border="0" cellspacing="1" cellpadding="0">
        <tr>
            <td id="ctl00_ContentPlaceHolder1_ctl02_tdTitulo" class="tituloTV" height="20" colspan="6">XX</td>
        </tr>
        <tr>
            <td class="TDTVHeader" width="4%"><a id='aSinalMain' class='sinal hand' onclick='aSinalMain_onClick(this)'>[+]</a></td>
            <td class="TDTVHeader" colspan="1">XXXnbsp;</td>
            <td class="TDTVHeader" colspan="1">XXXbsp;</td>
            <td class="TDTVHeader" colspan="1">XXXsp;</td>
            <td class="TDTVHeader" colspan="1">XXX</td>
            <td class="TDTVHeader" colspan="1">XXX&nbsp;</td>
        </tr>
        <tr>
            <td class="TDFQ" colspan="1"><a id='aSinal' class='sinal hand'>[+]</a></td>
            <td class="TDFQ" colspan="1">XXX</td>
            <td class="TDFQ" colspan="1">XXX</td>
            <td class="TDFQ" colspan="1">XX</td>
            <td class="TDFQ" colspan="1">XX</td>
            <td class="TDFQ" colspan="1">XX</td>
        </tr>
        <tr style="display:none;">
            <td class="TDFQ historico" colspan="6"><div class=scroll>I WANT HERE HERE HERE</div></td>
        </tr>
        <tr>
            <td class="TDFQ" colspan="1"><a id='aSinal' class='sinal hand'>[+]</a></td>
            <td class="TDFQ" colspan="1">XXXp;</td>
            <td class="TDFQ" colspan="1">XXX&nbsp;</td>
            <td class="TDFQ" colspan="1">XXXT;</td>
            <td class="TDFQ" colspan="1">XXX</td>
            <td class="TDFQ" colspan="1">XXX&nbsp;</td>
        </tr>
    </table>
    </div>  

Python代码:

text = driver.find_element_by_name('ctl00_ContentPlaceHolder1_ctl02_tblHistorico')

3 个答案:

答案 0 :(得分:1)

根据您的描述,您正在为“名称”寻找“ id”否,因此请使用方法:

table = driver.find_element_by_id('ctl00_ContentPlaceHolder1_ctl02_tblHistorico')

这将为您提供整个表格的元素。

如果您了解所需单元格的其他信息,则可以找到该特定元素。

https://selenium-python.readthedocs.io/locating-elements.html

例如,要获取您在帖子中标记的文本,可以使用它,因为只有一个标签具有该类名称:

div = driver.find_element_by_class_name('scroll')
text = div.text

答案 1 :(得分:0)

您想要的是通过CSS选择器获取所需的元素。

This是您要使用的方法。

正确的CSS选择器表达式应为以下字符串。

#ctl00_ContentPlaceHolder1_ctl02_tblHistorico.TDFQ historico

答案 2 :(得分:0)

请尝试以下代码。如果有帮助,请告诉我。您需要JavaScript执行程序才能获取隐藏字段的文本。

eletext=driver.execute_script("return arguments[0].innerHTML;",driver.find_element_by_xpath("//div[@class='scroll']"))
print(eletext)

希望这对您有所帮助。