如何仅通过在最新版本的Selenium IDE Chrome Extension中运行命令来获取数字

时间:2018-12-12 06:50:14

标签: javascript selenium xpath selenium-ide

通过在Selenium IDE中的命令下运行。我设法得到这样的句子:“ 您的预订ID为1234 ”。我将句子存储在名为 myText

的变量中

<table>
  <tr>
    <th>Command</th>
    <th>Target</th> 
    <th>Value</th>
  </tr>
  <tr>
    <td>store text</td>
    <td>xpath=//div[@id='booking']/div/div[3]</td>
    <td>myText</td>
  </tr>
</table>

我如何只获取数字并将其存储在变量中以备后用?我需要使用JavaScript还是只需要操纵xpath?

注意:数字是动态的

谢谢!

4 个答案:

答案 0 :(得分:2)

如果文本Your booking ID is始终与您可以使用的文本相同,则为:

substring-after(//div[@id='booking']/div/div[3], 'Your booking ID is ')

输入:

<html>
    <div id="booking">
        <div>
            <div>bla bla bla</div>
            <div>bla bla bla</div>
            <div>Your booking ID is 1234</div>
            <div>bla bla bla</div>
        </div>
    </div>
</html>

使用XSLT的XPath

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

<xsl:output method="text" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
    <xsl:template match="/">
        <xsl:value-of select="substring-after(//div[@id='booking']/div/div[3], 'Your booking ID is ')"/>
    </xsl:template>

</xsl:transform>

结果:

1234

请参见以下链接: http://xsltransform.net/gVAjbSz

答案 1 :(得分:1)

除了xpath和Javascript,还有第三个选项: Regex

如果文本Your booking ID始终与您可以使用kantu selenium idesourceExtract命令一起使用

sourcExtract | regex=Your booking number is (\d+)@1,1 | number

测试:下面的宏在此stackoverflow 页上有效:-) ...只需将其粘贴到source code tab中。

{
  "Name": "regex test",
  "CreationDate": "2018-12-12",
  "Commands": [
    {
      "Command": "open",
      "Target": "https://stackoverflow.com/questions/53737506/how-to-get-number-only-by-running-the-command-in-the-latest-version-of-selenium/53741771#53741771",
      "Value": ""
    },
    {
      "Command": "sourceExtract",
      "Target": "regex=Your booking number is (\\d+)@1,1",
      "Value": "test"
    },
    {
      "Command": "echo",
      "Target": "number is ${test}",
      "Value": "green"
    }
  ]
}

宏的测试数据-上面宏中的正则表达式在下面的代码块中找到字符串

<div>bla bla bla</div>
<div>bla bla bla</div>
<div>Your booking number is 56789</div>
<div>bla bla bla</div>

答案 2 :(得分:0)

在之后使用子串

substring-before(substring-after('//div[@id='booking']/div/div[3]','Your booking ID is '),'/')

答案 3 :(得分:0)

您可以使用Xpath 2.0吗?

translate(//div[@id='booking']/div/div[3], replace(//div[@id='booking']/div/div[3], '\d', ''), '')