如何相对于另一个元素的innerText提取元素的innerText

时间:2018-04-24 10:29:32

标签: python selenium selenium-webdriver xpath webdriver

我在python中使用selenium。我遇到过这张桌子。我需要检查webelement中是否存在字符串,并返回相应的字符串以防其存在。

<table width="700px" class="tableListGrid">
    <thead>
        <tr class="tableInfoTrBox">
            <th>Date</th>
            <th>Task Code</th>
            <!-- th>Phone Number</th -->
            <th>Fota Job</th>
            <th colspan="2" class="thLineEnd">Task Description</th>
        </tr>
    </thead>
    <tbody>                         
        <tr class="tableTr_r">                                                                                      
            <td>2018-04-06 05:48:29</td>
            <td>FU</td>
            <!-- td></td -->
            <td>
                <a href="javascript:checkSchedule('57220180406-JSA69596727');">57220180406-JSA69596727</a>
            </td>
            <td style="text-align:left;">
                                       updated from [A730FXXU1ARAB/A730FOJM1ARAB/A730FXXU1ARAB] to [A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9] 
            </td>
            <td>
                <table class="btnTypeE">
                    <tr>
                        <td>
                        <a href="#syncml" class="02320180406WSA84301933" onclick="showSyncML('IMEI352020090050529', '02320180406WSA84301933')">View</a>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>                                           
    </tbody>
</table>

我需要搜索&#34; A730FXXU2ARC9 / A730FOJM2ARC1 / A730FXXU2ARC9&#34;在这个元素中并返回&#34; 57220180406-JSA69596727&#34;它存在于网页中不同位置的同一行中。是否可以在硒中进行?

编辑:清除代码只包含有用的数据。

2 个答案:

答案 0 :(得分:2)

可以通过使用以下Xpath查找元素来实现:

//td[contains(., 'A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9')]/preceding-sibling::td[1]/a

Xpath可以读作

  

查找td,其中包含&#34; A730FXXU2ARC9 / A730FOJM2ARC1 / A730FXXU2ARC9&#34;。然后找到td   在找到的td之前移至a代码

在此之后,您可以使用selenium

获取文本
driver.find_element(By.XPATH, '//td[contains(., 'A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9')]/preceding-sibling::td[1]/a').text

答案 1 :(得分:0)

查找文字,例如 A730FXXU2ARC9 / A730FOJM2ARC1 / A730FOJM2ARC9 ,并查找相关文字,例如 57220180406-JSA69596727 ,您可以编写如下函数:

def test_me(myString):
        myText = driver.find_element_by_xpath("//table[@class='tableListGrid']//tbody/tr[@class='tableTr_r']//td[.='" + myString + "']//preceding::td[1]/a").get_attribute("innerHTML")

现在,您可以在main() / @Test中使用所需文字调用该函数,如下所示:

test_me("A730FXXU2ARC9/A730FOJM2ARC1/A730FXXU2ARC9")