Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找表';按A列中包含的某些文本替换行,并在同一行中选择B列_Javascript_Phantomjs_Casperjs - Fatal编程技术网

Javascript 查找表';按A列中包含的某些文本替换行,并在同一行中选择B列

Javascript 查找表';按A列中包含的某些文本替换行,并在同一行中选择B列,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我用的是casperjs。当前页面上有一个表,如下所示。我有字符串“我喜欢的第2行标题”,我想在表中搜索包含此字符串的行 然后单击该行中的按钮,即Clicky按钮2 <table> <!-- ...table header... --> <tr id="row1"> <td>Row 1</td> <td>Title of Row 1</td> <

我用的是casperjs。当前页面上有一个表,如下所示。我有字符串
“我喜欢的第2行标题”
,我想在表中搜索包含此字符串的行

然后单击该行中的按钮,即
Clicky按钮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行标题
点击按钮1
第2排
我喜欢第2行的标题
点击按钮2
我的想法是:

  • 我制作了一个正则表达式,在整个DOM中搜索包含第2行标题的整行,我喜欢“”以获取它所在行的
    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,如果您有它可用的话。为了匹配上面的示例,您可以使用

    casper.click(x("//tr/td[contains(., 'Title of Row 2 which I like')]/following-sibling::td[1]/button"));
    
    $(“td:contains('我喜欢的第2行标题'))


    注意它是区分大小写的。

    我问这个问题是为了避免这样做,伙计。@ArtjomB。这对任何人都没有帮助。谢谢你,你忘了带钥匙了clicking@ArtjomB. 找到DOM元素是目前的问题。这是一个练习,让读者做其他事情。当然,现在他想点击一个按钮。但也许明天他想更改父行的CSS。但是,继续往下投票。好吧,我同意使用jQuery查找元素可以很容易地从实际单击中分离出来,这在casper方法中是不容易实现的,因为需要不同的XPath/CSS选择器。我确实没有询问单击;我知道如何在文档中查找
    click()
    。这也是一个很好的解决方案,Artjom的稍微不那么复杂,因为我不需要JQuery。我想我需要了解XPath。