阅读单选按钮的标签,并用Selenium确认值

阅读单选按钮的标签,并用Selenium确认值,selenium,text,radio-button,Selenium,Text,Radio Button,正如标题所示。我想确认单选按钮的值是否正确 HTML格式如下: <input type="radio" value="Coach" name="servClass" checked=""> <font face="Arial, Helvetica, sans-serif"> Economy class <br> <input type="radio" value="Business" name="servClass"> Business class

正如标题所示。我想确认单选按钮的值是否正确

HTML格式如下:

<input type="radio" value="Coach" name="servClass" checked="">
<font face="Arial, Helvetica, sans-serif">
Economy class
<br>
<input type="radio" value="Business" name="servClass">
Business class
<br>
<input type="radio" value="First" name="servClass">
First class
</font>
    String expectedServiceClass = "First class";

    String actualServiceClass = driver.findElement(By.cssSelector("input[value='First']")).getText();


    if (actualserviceClass.equals(expectedServiceClass)){
        System.out.println("Correct Wording");

    }else{
        System.out.println("Oops: somethings not right with the    wording");
        //close Firefox
        driver.close();

    // exit the program explicitly
        System.exit(0); 
    }
但是当执行此操作时,actualServiceClass变量不包含任何值,即null,因此if语句将始终打印Oops:somethings不正确的措辞


有什么帮助吗?

使用当前HTML代码,您将无法确认单选按钮标签的值,因为单选按钮被实现为输入标记,这是一个自动关闭标记,因此输入时getText将始终返回null。您将需要一个像div这样的容器标记来包含输入标记单选按钮和标签。参考:

问题不在于Selenium代码,而在于不正确的HTML代码段。按以下方式更改HTML可以解决此问题:

<font face="Arial, Helvetica, sans-serif">
  <div>
    <input type="radio" value="Coach" name="servClass" checked="">
    Economy class
    <br>
  </div>
  <div>
    <input type="radio" value="Business" name="servClass">
    Business class
    <br>
  </div>
  <div>
    <input type="radio" value="First" name="servClass">
    First class
  </div>

在此之后,只需更改Css选择器或XPath来查找div,就会得到单选按钮标签的值。Css选择器可以是div>input[value='First']。如果您能解决问题,请告诉我。

我同意@Manu的说法,HTML代码片段很差,但您可以使用javascript childNodes从节点获取文本

childNodes属性以NodeList对象的形式返回节点的子节点的集合

集合中的节点按其在源代码中的显示进行排序,并且可以通过索引号进行访问。索引从0开始

使用executescript在当前选定帧或窗口的上下文中执行JavaScript

下面是一个java示例

不要忘记添加return,因为您需要将值返回给调用者

WebElement element = driver.findElement(By.xpath("//input[@value='Coach']/following-sibling::font"));

String node_text=(String)((JavascriptExecutor)driver).executeScript("return arguments[0].childNodes[0].nodeValue",element);

System.out.println(node_text.trim());
尝试上面的脚本,它将返回经济舱

在上面的脚本中,我们使用childnode属性来获取 字体标签

类似地,可以通过替换childnode索引来获取其他文本节点

childNodes[4]-->业务类

childNodes[8]-->第一类

我试过上面的代码,效果很好


希望这对您有所帮助…如果您有任何疑问,请返回

啊,太好了,我想我对代码很生气:-好的,我会将您的评论传递给其他人,这样他们可以做得更好。。。。