簡體   English   中英

通過包含在A列中的某些文本查找表的行,並在同一行中選擇B列

[英]Finding a table's row by some text it contains in column A, and selecting column B in the same row

我正在使用casperjs。 當前頁面上有一個表格,如下所示。 我有字符串"Title of Row 2 which I like" ,我想在包含此字符串的表中搜索該行。

然后單擊該行中的按鈕,即Clicky button 2

<table>
    <!-- ...table header... -->
    <tr id="row1">
        <td>Row 1</td>
        <td>Title of Row 1</td>
        <td>
            <button ... onClick='some javascript function'>Clicky Button 1</button>
        </td>
    </tr>
    <tr id="row 2">
        <td>Row 2</td>
        <td>Title of Row 2 which I like</td>
        <td>
            <button ... onClick='some javascript function'>Clicky button 2</button>
        </td>
    </tr>
</table>

我的想法是:

  1. 我做了一個正則表達式,在整個DOM中搜索具有"Title of Row 2 which I like"的整個行,以獲取所在行的id 。然后,我組成了一個選擇器,並在該行下方找到了按鈕行。 我已經做到了,這很好。

這就是我的想法。 我只是想知道, 有沒有更多的卡斯帕 (或優雅的 )的方式來做到這一點? 我看了一些功能...似乎無法通過其文本搜索某些內容。 以為像getElementsAttribute()這樣的東西可以讓我獲取我要查找的行的id ...但是無法找到該行。

您可以使用XPath輕松實現這一目標。 CasperJS提供了XPath實用程序:

var x = require('casper').selectXPath;

因此,您單擊這樣的按鈕:

casper.click(x("//tr[contains(td, 'Title of Row 2 which I like')]//button"));

假設每行只有一個按鈕。 如果按鈕在下一個td則可以使用

casper.click(x("//tr/td[contains(., 'Title of Row 2 which I like')]/following-sibling::td[1]/button"));

JQuery(如果可用) 具有一個選擇器,該選擇器可根據其text搜索DOM節點 為了匹配上面的示例,您可以使用

$(“ td:contains('我喜歡的第2行標題')”)

請注意,它區分大小寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM