有没有办法操纵<;脚本>;使用SeleniumWebDriverforJava的标记?
我正在开发一个web应用程序,它有一个查询表单来提供搜索条件。在表单中填写查询条件并进行搜索后,将在搜索表单下方加载一个表 现在这个表不是由通常的tr和td标记组成的,而是由几个脚本标记组成,如-有没有办法操纵<;脚本>;使用SeleniumWebDriverforJava的标记?,java,selenium,Java,Selenium,我正在开发一个web应用程序,它有一个查询表单来提供搜索条件。在表单中填写查询条件并进行搜索后,将在搜索表单下方加载一个表 现在这个表不是由通常的tr和td标记组成的,而是由几个脚本标记组成,如- <TABLE> <THEAD>...</THEAD> <TBODY> <SCRIPT> var colElm1 = document.createElement("SPAN"); colElm1.innerText = "A
<TABLE>
<THEAD>...</THEAD>
<TBODY>
<SCRIPT>
var colElm1 = document.createElement("SPAN");
colElm1.innerText = "ABCD";
rowElm1.appendChild(colElm1);
</SCRIPT>
<SCRIPT>
var colElm1 = document.createElement("SPAN");
colElm1.innerText = "AB_CD123";
rowElm1.appendChild(colElm1);
</SCRIPT>
....
</TBODY>
</TABLE>
...
var colElm1=document.createElement(“SPAN”);
colElm1.innerText=“ABCD”;
第1行。附属物儿童(colElm1);
var colElm1=document.createElement(“SPAN”);
colElm1.innerText=“AB_CD123”;
第1行。附属物儿童(colElm1);
....
现在我的问题是,有没有办法在整个源代码中使用selenium而不使用regex来获取“ABCD”和“AB_CD123”?更新
误解了这个问题,我以为您想更改
标记的内容
您可能可以使用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);
“您的新值”应该提供
的全部内容,因为脚本标记中的代码显示它将把SPAN追加到元素“rowElm1”中
rowElm1.appendChild(colElm1);
这个“rowElm1”应该是页面中的某个元素,一旦您从整个页面源中找到为“rowElm1”赋值的位置,您将知道如何从页面中找到它,然后您将看到所有显示范围的文本将显示在“rowElm1”中。
因此,您不需要从SCRIPT标记获取SPAN的文本,您应该从第页的元素“rowElm1”获取它们
driver.findElement(locator of 'rowElm1').getText();
rowElm1也存在于脚本标记中,它以-标记中代码>col\u count=0代码>
请找出行ELM1附加到何处?解决方案的关键点是找出所有这些附加的内容都是插入到页面上存在的元素中的。好了,现在我明白你的意思了。谢谢,你在看浏览器中加载的页面的HTML吗?看起来您可能在加载HTML页面之前查看了该页面的源代码,或者在页面的错误部分。在浏览器中找到所需的文本并对其进行检查,然后可以找到创建定位器的HTML。