C#Selenium从具有部分ID的范围中提取数据

时间:2016-09-19 16:01:01

标签: c# selenium xpath

我正在尝试在C#Selenium中创建一个合适的XPATH语法来提取网页上的订单号。以下是我试图获取屏幕截图中显示的订单号。所有这些都对我产生了不利影响。

$searchResponse = $youtube->search->listSearch('id,snippet', array(
  'q' => 'cars',
  'maxResults' => 10,
));

以下是Chrome的检查。我试图获取订单号,但它并不总是相同,所以我不能硬编码span id。

enter image description here

2 个答案:

答案 0 :(得分:1)

driver.FindElement(By.XPath("//span[@id^='order-number-'"))肯定不匹配,因为^=不是XPath语言中的有效运算符。另外,您没有关闭方括号。

相反,如果您想要更短且更易读的版本,请使用CSS选择器:

driver.FindElement(By.CssSelector("span[id^=order-number]"))

此处^=表示“以...开头”。

如果您想继续使用XPath,请使用starts-with() function

driver.FindElement(By.XPath("//span[starts-with(@id, 'order-number-')]"))

答案 1 :(得分:0)

你可以尝试一下:

var result = driver.FindElement(By.XPath("//span[contains(@id, 'order-number-')]")).Text;

它使用"包含"在跨度ID上。如果这有帮助,请告诉我。