有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript验证在网页上以单行或不同行显示一对字符串

我需要验证一个关于运动员的网页,并且我需要检查运动员姓名是否正确显示在网页上。例如,“Andrew Barron Murray爵士”是我需要在整个网页中检查的名字,这个名字应该显示在每一行中。它不应该像安德鲁爵士排在一行,巴伦·默里排在第二行那样。整个名称必须显示在一行中

我尝试了一段正文,并检查了每个字母的IndexOf,但没有成功。我能想到的另一个解决方案是获得字符串中每个单词的精确坐标,并相互比较。但我不确定如何获得web元素中文本的坐标。我知道我们可以使用getLocation,但这将获得web元素的位置,而不是web元素中的确切文本


共 (2) 个答案

  1. # 1 楼答案

    使用XPath

    //*[contains(text(), 'your text you are searching for')]
    

    如果文本在页面上,它会找到它

  2. # 2 楼答案

    在JS中,您可以通过element.innerHTML使用类似于“a”的字符填充元素,然后使用element.getBoundingClientRect().height获取其高度。 然后将名称重新插入到元素中,并再次执行相同的操作。你会发现第二个高度是第一个高度的倍数

    var text = element.innerHTML;
    var one_line_height = element.getBoundingClientRect().height;
    element.innerHTML = text;
    var current_height = element.getBoundingClientRect().height; // must be recalled
    
    console.log("Ratio: "+(current_height/one_line_height));
    // should output 1 if the two are matching or 2, if its two lines
    

    编辑:如果名称在文本中,请使用display: inline;将名称包装在div包装中,然后在div元素上重新进行计算。这是因为内联元素在换行时中断