我需要从div元素中提取OrderID,以便使用C#进行selenium测试。以下是我的代码:
public static string GetOrderId(IWebDriver instance)
{
var orderIdText = instance.FindElement(By.XPath("//*
[@id='contentArea']/div[1]/div/div/div[1]")).Text;
//Need to extract OrderID from the orderIdText.
return orderId;
}
div元素是这样的:
<div>Thank you for requesting a record through the Record Request service. Your order number for this transaction is KR589497.
<p>Your credit card has been charged ............. </p>
</div>
我需要OrderId = KR589497并返回此值。
答案 0 :(得分:0)
抓住整个元素并将其命名为OrderIdText,然后尝试以下内容:
var OrderId = OrderIdText.substring(OrderIdText.indexOf("is"), OrderIdText.indexOf("."));
你很可能不得不用一两个字符修改上面的内容,但应该是一个好的开始。
答案 1 :(得分:0)
计算订单ID的正确语法是:
var orderID= orderIdText.substring(orderIdText.lastIndexOf("is")+3, orderIdText.lastIndexOf(".",orderIdText.indexOf("\r")))
答案 2 :(得分:0)
编辑:根据OP的评论,您匹配的字符串可以有不同的格式:
"Your **order** number for this transaction is KR589497."
"Your **confirmation** number for this transaction is MT289555."
由于您只对&#34; OrderID&#34;感兴趣,要从两个字符串创建正则表达式,您希望尽可能采用&#34; union&#34;这些字符串:
" number for this transaction is {OrderID}."
这也意味着&#34;更小&#34;两个字符串的并集也会导致匹配:
"transaction is {OrderID}."
以下是使用正则表达式的解决方案:
Regex regex = new Regex(@" number for this transaction is ([^\.]+)\.",
RegexOptions.Compiled);
Match match = regex.Match(orderIdText);
if (match.Success)
{
string orderId = match.Groups[1].Value; // "KR589497"
}
正则表达式解释:
" number for this transaction is ([^\.]+)\."
number for this transaction is
- 完全匹配字符串([^\.]+)
- 匹配一个或多个字符,不包括.
个字符
orderId
,您可以根据需要添加业务规则\.
- 完全匹配.
字符