Java 获取介于之间的文本<;输入>;标签
如何获取标记之间的值。以下是HTML。。。 复选框值需要存储在列表中Java 获取介于之间的文本<;输入>;标签,java,selenium,webdriver,Java,Selenium,Webdriver,如何获取标记之间的值。以下是HTML。。。 复选框值需要存储在列表中 <div class="rcbScroll rcbWidth" style="height:180px;width:100%;"> <div class="rcbCheckAllItems"><input type="checkbox" class="rcbCheckAllItemsCheckBox">Check All</div> <ul class="rcb
<div class="rcbScroll rcbWidth" style="height:180px;width:100%;">
<div class="rcbCheckAllItems"><input type="checkbox" class="rcbCheckAllItemsCheckBox">Check All</div>
<ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;">
<li class="rcbHovered "><input type="checkbox" class="rcbCheckBox">Dallas , Wanda</li>
<li class="rcbItem "><input type="checkbox" class="rcbCheckBox">Parker , Tina</li>
<li class="rcbItem "><input type="checkbox" class="rcbCheckBox">Plano , Samantha </li>
<li class="rcbItem "><input type="checkbox" class="rcbCheckBox">Richardson , Christina</li>
<li class="rcbItem "><input type="checkbox" class="rcbCheckBox">Dave , Test</li>
<li class="rcbItem "><input type="checkbox" class="rcbCheckBox">clinician , test</li>
<li class="rcbItem "><input type="checkbox" class="rcbCheckBox">Smith , Jasmin</li>
</ul>
</div>
全部检查
达拉斯,万达
蒂娜帕克
萨曼莎普莱诺
克里斯蒂娜·理查森
戴夫,测试
临床医生,测试
史密斯,贾斯敏
请帮我找到密码。绑定语言是JAVA。
我的示例代码:-
List<WebElement> eles = driver.findElements(By.cssSelector("ul.rcbList > li"));
List<String> txts = new ArrayList<String>();
String script = "return arguments[0].lastChild.nodeValue;";
JavascriptExecutor js = (JavascriptExecutor) driver;
Boolean stale = true;
for (WebElement ele : eles) {
try {
WebElement webEle = ele.findElement(By.className("rcbCheckBox"));
if (webEle.getText().equals(sheetValue)) {
String text = (String) js.executeScript(script, ele);
txts.add(text.toString());
String txt = text.toString();
for (String texts : txts) {
System.out.println("Print----------> " + texts);
}
Thread.sleep(3000);
// if (text.equals(sheetValue)) {
System.out.println("inside if" + webEle.getText().equals(sheetValue));
ele.findElement(By.tagName("input")).click();
;
} // ele.click();
stale = false;
} catch (StaleElementReferenceException e) {
stale = true;
}
}
List eles=driver.findElements(By.cssSelector(“ul.rcbList>li”);
List txts=new ArrayList();
String script=“返回参数[0].lastChild.nodeValue;”;
JavascriptExecutor js=(JavascriptExecutor)驱动程序;
布尔陈旧=真;
for(WebElement ele:eles){
试一试{
WebElement webEle=ele.findElement(By.className(“rcbCheckBox”);
if(webEle.getText().equals(sheetValue)){
String text=(String)js.executeScript(script,ele);
add(text.toString());
字符串txt=text.toString();
用于(字符串文本:txts){
System.out.println(“打印---------------->”+文本);
}
睡眠(3000);
//if(text.equals(sheetValue)){
System.out.println(“内部if”+webEle.getText().equals(sheetValue));
ele.findElement(按.tagName(“输入”))。单击();
;
}//ele.click();
陈旧=错误;
}捕获(StaleElementReferenceException e){
陈旧=真实;
}
}
我现在被困在这里。使用getText()
可以获取WebElement的内部文本。既然
标记中没有任何文本,我想您想要获取属性吗?
如果需要WebElement的属性,可以使用
getAttribute()
这将返回Webelements列表
driver.FindElement(By.XPath("html/body/div[1]/ul"));
试试这个:
List<WebElement> checkboxes=driver.findElements(By.xpath("//ul[@class='rcbList']/li"));
for (WebElement checkbox: checkboxes) {
System.out.println(checkbox.getText());
List checkbox=driver.findElements(By.xpath(“/ul[@class='rcbList']/li”);
用于(WebElement复选框:复选框){
System.out.println(checkbox.getText());
in标记中的文本是TextNode类型,而不是ElementNode。Selenium的find API只能从HTML DOM树返回ElementNode
要访问TextNode,必须通过driver.executeScript()
使用JavaScript,如下所示:
List<WebElement> eles = driver.findElements(By.cssSelector("ul.rcbList > li"));
List<String> txts = new ArrayList<String>();
String script = "return arguments[0].lastChild.nodeValue;";
JavascriptExecutor js = (JavascriptExecutor) driver;
int length = eles.size();
for(int i=0;i<length;i++) {
WebElement ele = eles.get(i);
String text = (String) js.executeScript(script, ele);
if(text.equals(sheetValue)) {
ele.findElement(By.cssSelector('input')).click();
txts.add(text);
// find all li again on page after click,
// seems each click on checkbox caused page DOM tree changed
eles = driver.findElements(By.cssSelector("ul.rcbList > li"));
}
}
List eles=driver.findElements(By.cssSelector(“ul.rcbList>li”);
List txts=new ArrayList();
String script=“返回参数[0].lastChild.nodeValue;”;
JavascriptExecutor js=(JavascriptExecutor)驱动程序;
int length=eles.size();
对于(int i=0;i,通过问题中的解释和看到其他答案,我认为您需要HTML标记之间的HTML内容,即-
- 全部检查
- 达拉斯,万达
- 帕克,蒂娜
- 理查森,克里斯
- 戴夫,测试
- 临床医生
- 史密斯,茉莉
要获取上述HTML内容,请尝试使用以下java代码
Java代码
现在,您可以通过迭代innerHTML
ArrayList来访问这些HTML内容。希望有帮助。请尝试一下,它会起作用的
List<WebElement> elementList=driver.findElements(By.xpath("//ul[@class='rcbList']/li"));
List<String> valueList=new ArrayList<String>();
int size=elementList.size();
for(int i=0;i<size;i++){
valueList.add(elementList.get(i).getText());
}
List elementList=driver.findElements(By.xpath(“/ul[@class='rcbList']/li”);
List valueList=新的ArrayList();
int size=elementList.size();
对于(int i=0;i实际上,我在ui li标记中有一系列复选框。列表标记=driver.findElements(By.cssSelector(“.rcbCheckBox”);system.out.println(tags.get(i.getText());=>中间不打印测试。请帮助尝试这个驱动程序。findElement(By.cssSelector(“.rcbheckbox”);input[class=“rcbCheckBox”)。getText();虽然此代码片段可能会解决问题,但确实有助于提高您文章的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您代码建议的原因。添加完整的HTMLI已添加html@reshmianeesh你所说的获取标签之间的值是什么意思?是y吗您正在尝试提取任何文本
?哪些文本?我指的是介于两个标记之间的文本。因为它是复选框,所以我也需要检查它。它不起作用。它是一个列表,所以getAttribute不起作用。请尝试使用getText()列表标记=驱动程序。findElements(By.cssSelector(//input[@class='rcbCheckBox']);该怎么办?xpath-//input[@class='rcbCheckBox']不起作用。因此我无法继续。+1在我这边,我测试了它,它工作得很好。@reshmianeesh,请检查此解决方案,如果它能解决您的问题,请接受它。尽管您可以使用(字符串文本:txts){System.out.println(text);}出于打印目的。您应该在代码中键入一些错误的内容,并仔细检查。或者在您的问题中显示这些内容,我会找出错误的地方。@Reshmi,请澄清您想要什么?从您的问题描述中,您希望存储所有复选框的文本。但是从您给定的代码中,您希望选择文本与she相同的复选框etValue
。如果您想要前者,我的答案中的代码应该解决它,而不是作为您的反馈我的代码不起作用
代码根据您的需要更新。您可以从变量txts
中获取所选复选框的文本。对不起,第一行,我将编辑它。除此之外,我还需要改进吗?@cruisepandey
Full match: Check All
Full match: Dallas , Wanda
Full match: Parker , Tina
Full match: Richardson , Christina
Full match: Dave , Test
Full match: clinician , test
Full match: Smith , Jasmin
List<WebElement> elementList=driver.findElements(By.xpath("//ul[@class='rcbList']/li"));
List<String> valueList=new ArrayList<String>();
int size=elementList.size();
for(int i=0;i<size;i++){
valueList.add(elementList.get(i).getText());
}