有没有办法使用Selenium Web驱动程序为java操作<script>标签?

时间:2017-09-20 09:21:08

标签: java selenium

我正在开发一个Web应用程序,它有一个查询表单来提供搜索条件。一旦在表单中填写了查询条件并进行了搜索,就会在搜索表单下方加载一个表格。

&#xA;&#xA;

&#xA;现在这个表格不是由通常的 tr td 标签,但由几个脚本标签组成,如 -

&#xA;&#xA;
 &lt; TABLE&gt;&# XA;&LT; THEAD&GT; ...&LT; / THEAD&GT;&#XA;&LT; TBODY&GT;&#XA;&LT; SCRIPT&GT;&#XA; var colElm1 = document.createElement(“SPAN”);&#xA; colElm1.innerText =“ABCD”;&#xA; rowElm1.appendChild(colElm1);&#XA;&LT; / SCRIPT&GT;&#XA;&LT; SCRIPT&GT;&#XA; var colElm1 = document.createElement(“SPAN”);&#xA; colElm1.innerText =“AB_CD123”;&#xA; rowElm1.appendChild(colElm1);&#XA;&LT; / SCRIPT&GT; &#XA; ....&#XA;&LT; / TBODY&GT;&#XA;&LT; /表&gt;&#XA;  
&#XA;&#XA;

现在我的问题是,是否有任何方法可以使用selenium获取“ABCD”和“AB_CD123”,而不是在整个源代码中使用正则表达式?

&#xA;

2 个答案:

答案 0 :(得分:0)

<强>更新 误解了这个问题,我想你想改变<script>标签的内容。

您可以使用<script>逐个对所有JavascriptExecutor代码执行此操作,如下所示:

WebElement scriptTag1 = driver.findElement(By.xpath("//table//tbody/script[1]"));
JavascriptExecutor js = (JavascriptExecutor)driver;
//you can use following line
js.executeScript("arguments[0].setAttribute('value', 'your new value');", scriptTag1);

//or if above line doesn't work then following line
 js.executeScript("arguments[0].setAttribute('innerHTML', 'your new value');", scriptTag1);
  

'您的新价值'应提供<script...</script>代码

的全部内容

答案 1 :(得分:0)

正如Script标签中的代码所示,它会将SPAN附加到元素&#39; rowElm1&#39;。

rowElm1.appendChild(colElm1);

这个&#39; rowElm1&#39;应该是页面中的一些元素,一旦找到将值赋值给&#39; rowElm1&#39;从整个页面源,您将知道如何从页面中找到它,然后您将看到所有已添加的SPAN文本将显示在&#39; rowElm1&#39;内。

因此,您无需从SCRIPT标签获取SPAN文本,您应该从元素&#39; rowElm1&#39;中获取它们。在页面上。

driver.findElement(locator of 'rowElm1').getText();