如何使用Angular方法将数据检索到selenium java脚本中

时间:2016-09-12 03:59:24

标签: java jquery angularjs selenium

我想从“visitor”或“visitor.VisitorId”中检索访客ID。但是在我用来检索数据但是成功运行但没有任何错误但是我收到的值为null的代码之下。

HTML代码: -

<ul class="sidebar-menu">
<li id="visitorView" class="treeview active">
<a>
<ul id="visitorViewMenu" class="treeview-menu menu-open" style="display: block;">
<!-- ngRepeat: visitor in Visitors -->
<li class="ng-scope" ng-repeat="visitor in Visitors" style="">
<a id="visitor.VisitorId" class="ng-binding" ng-click="select(visitor)">
<countryflag class="flagimg ng-isolate-scope" visitor="visitor">
<span class="chattabname"/>
A 
<span class="timmer1 pull-right" runtimer="{"VisitorID":"c2c45b4d-5077-492f-afd6-88ab3bba99cd","Name":"A","StartTime":"2016-09-09 10:33:21","WidgetId":"7fcf22c6-4a9d-4701-9865-b8a85d597862","ConnectionId":"edc7d72b-8217-4961-81ff-f4ef4138bc3b","TimeZone":"Asia/Colombo","CountryCode":"lk","VisitorName":null,"Department":null,"CompanyId":"a4afbd8b-1de9-49d9-8fe6-4ec8119f4bb8"}">
</a>
</li>
<!-- end ngRepeat: visitor in Visitors -->
<li>
</ul>
</li>
<li class="treeview">
<li class="treeview">
</ul>

Selenium代码: -

**1st method :-** 
    WebElement cityField = driver.findElement(By.cssSelector("a[ng-click='select(visitor)']"));

**2nd method :-** 
    WebElement cityField = driver.findElement(By.cssSelector("a[id='visitor.VisitorId']"));

**Output**  
    System.out.println("+++-- "+cityField.getAttribute("value")); 

2 个答案:

答案 0 :(得分:1)

尝试使用getText(),它将返回innerText元素的<a>,如下所示: -

WebElement cityField = driver.findElement(By.id("visitor.VisitorId"));
System.out.println("+++-- "  + cityField.getText());

或者,如果您想在span属性值中显示visitorId的{​​{1}}元素,则应找到runtimer元素并获取span属性值为: -

runtimer

WebElement cityField = driver.findElement(By.cssSelector("a[id = 'visitor.VisitorId'] span.timmer1")); String runtimeData = cityField.getAttribute("runtimer"); //Now do some programming stuff to retrieve visitor id 属性数据看起来像runtimer格式,因此您可以通过传递json转换为org.json.JSONObject后检索任何数据,如下所示: -

key

输出: -

  

c2c45b4d-5077-492f-afd6-88ab3bba99cd

正如OP建议的那样,我们也可以使用import org.json.JSONException; import org.json.JSONObject; public static Object getValue(String data, String key) throws JSONException { JSONObject jObject = new JSONObject(data); return jObject.get(key); } String visitorID = (String) getValue(runtimeData, "VisitorID"); System.out.println(visitorID); 函数来检索数据: -

split()

答案 1 :(得分:0)

如果我理解正确您要查找的值位于runtimer的后代元素中的id="visitor.VisitorId"属性中,则需要将其放在getAttribute()方法

WebElement cityField = driver.findElement(By.cssSelector("#visitor.VisitorId > .timmer1"));
String attributeData = cityField.getAttribute("runtimer");
String visitorId = attributeData.split(",");
System.out.println("+++-- " + visitorId);

输出:+++-- "VisitorID":"c2c45b4d-5077-492f-afd6-88ab3bba99cd"