我想使用.each()
遍历DOM元素,并找到与变量具有相同.text()
的特定元素。如果正确的元素是最后一个兄弟,则会出现问题。
示例:
<p> wrong </p>
<p> wrong </p>
<p> right </p>
在进入此代码中的正确元素之前,它将经历两个错误的元素。我无法删除else
因为我需要查看是否所有元素都没有此文本,如果没有,则应该发生其他事情。现在它将是假两次并将创建2个新<p>
然后当它到达最后一个元素时它将抛出alert()
。还有其他办法吗?
$('p').each(function() {
if ($(this).text() == "right") {
alert("this exists already");
return false;
} else {
// A p will be created with text right
}
});
答案 0 :(得分:1)
可以使用filter()
进行此操作,您需要删除空格,否则您的匹配将根据显示的内容进行操作。
var myVar = 'right';
var exists = $('p').filter(function() {
return $(this).text().trim() === myVar;
}).length;// length of collection will determine if filter has matches
if(!exists){
// add element
}
答案 1 :(得分:1)
你根本不需要循环。
只需使用:contains()选择器。
// alert the user if there is at least one <p>right</p> element
if ($('p:contains("right")').length) {
alert("this exists already");
} else {
// A p will be created with text right
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p> wrong </p>
<p> wrong </p>
<p> right </p>
&#13;
答案 2 :(得分:0)
我很确定这是你要求的。
// We care that it exists or not
var already_exists = false;
// Iterate through the existing elements
$('p').each(function() {
// If it exists, store that and break the loop because we don't need to check any more
if ($(this).text() == "right") {
already_exists = true;
return false;
}
});
// If, after checking (possibly) all elements, it exists, shout, else create it
if (already_exists){
alert("this exists already");
}else{
// A p will be created with text right
}
请注意
我不确定,.text()
上的<p> right </p>
是否匹配&#34; right
&#34;因为白色空间。你可能想修剪它。 if ($.trim($(this).text()) == "right")
答案 3 :(得分:0)
之前和之后的文本空间中的问题所以请修剪您的文本,如下所示
import java.io.File;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Radio {
public static void main(String[] args) {
WebDriver driver=new FirefoxDriver();
driver.get("http://echoecho.com/htmlforms10.htm");
File f1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(f1, "E:\\Pessoal\\QTPSelenium\\Screenshot1.jpg");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("File Location\\File Name"),true);
File scrFile1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(scrFile1, new File("c:\\tmp\\screenshot.png"));
driver.manage().window().maximize();
List<WebElement> allRadios= driver.findElements(By.name("group1"));
System.out.println("Total -->"+allRadios.size());
System.out.println("Before");
System.out.println(allRadios.get(0).getAttribute("checked"));
System.out.println(allRadios.get(1).getAttribute("checked"));
System.out.println(allRadios.get(2).getAttribute("checked"));
allRadios.get(0).click();
System.out.println("After");
System.out.println(allRadios.get(0).getAttribute("checked"));
System.out.println(allRadios.get(1).getAttribute("checked"));
System.out.println(allRadios.get(2).getAttribute("checked"));
}
}