我在Ruby中使用Webdriver,我希望通过xpath找到一个元素,下面是一个示例html:
<li id="ID1">
<label for="accountNumber"> </label>
123456
<span id="accountNumber"></span>
</li>
如何通过xpath或ID获取123456?
我在下面尝试了它并不起作用:
element = driver.find_element :xpath => "//li[@id='ID1']/"
puts element.text
感谢。
答案 0 :(得分:0)
我建议您使用cssselector
而不是xpath
,因为它有很多优点。但是,在某些情况下,您只能使用xpath
,例如选择父元素,按文字等进行选择。在您的情况下,您当然可以使用cssselector
html的Css为li#ID1>label[for='accountNumber']
或仅label[for='accountNumber']
如果你坚持使用xpath,它应该是.//li[@id='ID1']/label[@for='accountNumber']
或通过文字
.//li[@id='ID1']/label[text()='123456']
答案 1 :(得分:0)
试试这个:
“//的Li [含有(。, '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"
}
答案 2 :(得分:0)
请尝试以下,它对我有用:
element = driver.find_element(:xpath, "//li[@id='ID1']")
puts element.text