Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取介于之间的文本<;输入>;标签_Java_Selenium_Webdriver - Fatal编程技术网

Java 获取介于之间的文本<;输入>;标签

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

如何获取标记之间的值。以下是HTML。。。 复选框值需要存储在列表中

<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());
}