0

我在 Ruby 中使用 Webdriver,我想通过它的 xpath 定位一个元素,下面是一个示例 html:

<li id="ID1">
    <label for="accountNumber"> &nbsp;</label>
    123456
    <span id="accountNumber"></span>
</li>

如何通过 xpath 或 ID 获得 123456?

我在下面尝试过,但它不起作用:

element = driver.find_element :xpath => "//li[@id='ID1']/"
puts element.text

谢谢。

4

3 回答 3

0

我建议你使用cssselectorover,xpath因为它有很多优点。但是,在某些情况下您只能使用xpath选择父元素,按文本选择等。在您的情况下,您当然可以逃脱cssselector

您的 html 的 CSS 将是li#ID1>label[for='accountNumber']或只是简单地label[for='accountNumber']

如果你坚持使用xpath,应该是.//li[@id='ID1']/label[@for='accountNumber'] or by text .//li[@id='ID1']/label[text()='123456']

于 2013-10-08T00:43:52.547 回答
0

试试这个:

"//li[contains(.,'123456')]" 或 "//li[@id='ID1']"

在这两种情况下,我都能够从嵌套在元素内的文本中获取文本“123456”。

在 C# 中测试的代码:

    [TestMethod]
    public void FindByText()
    {
        IWebElement li = driver.FindElement(By.XPath("//li[contains(.,'123456')]")); //Returns correct element
        li = driver.FindElement(By.XPath("//li[@id='ID1']")); //Also returns correct element

        string text = li.Text; //Result: "  123456"
    }
于 2013-10-08T12:47:01.027 回答
0

请尝试以下操作,它对我有用:

element = driver.find_element(:xpath, "//li[@id='ID1']")
puts element.text
于 2013-10-09T09:23:48.480 回答