Java if(!string.equals.string)似乎一直在运行,而不仅仅是在它没有';不相等
当运行我的代码时,我遇到了!在一个陈述之前要有否定或相反的陈述。在本例中,if---此字符串不等于此字符串 我尝试过更改字符串中的第二个值,它每次都会更正它,但我观察了我的测试,这些值都是正确的,它仍然在运行。我一直想知道为什么,因为我需要在继续之前检查一下,Selenium 5-10%的时间输入字段太快了。这就是我实施此检查的原因Java if(!string.equals.string)似乎一直在运行,而不仅仅是在它没有';不相等,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,当运行我的代码时,我遇到了!在一个陈述之前要有否定或相反的陈述。在本例中,if---此字符串不等于此字符串 我尝试过更改字符串中的第二个值,它每次都会更正它,但我观察了我的测试,这些值都是正确的,它仍然在运行。我一直想知道为什么,因为我需要在继续之前检查一下,Selenium 5-10%的时间输入字段太快了。这就是我实施此检查的原因 driver.findElement(By.id("inputcardNumberField")).sendKeys("41111111111111111"); W
driver.findElement(By.id("inputcardNumberField")).sendKeys("41111111111111111");
WebElement visa = driver.findElement(By.id("inputcardNumberField"));
String visa2 = visa.getText();
Thread.sleep(2000);
if (!visa2.equals("4111111111111111")) {
driver.findElement(By.id("inputcardNumberField")).clear();
driver.findElement(By.id("inputcardNumberField")).sendKeys("4111111111111111");
}
如果Selenium填充InputCardNumber字段太快,并且整个卡不存在。。它应该清除并重新进入
如果有正确的卡,则不必重新输入。它现在每次都会重新输入它看起来我缺少get属性值——应该是这样的:
driver.findElement(By.id("inputcardNumberField")).sendKeys("4111111111111111");
WebElement visa = driver.findElement(By.id("inputcardNumberField"));
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
String value = driver.findElement(By.id("inputcardNumberField")).getAttribute("value");
Thread.sleep(2000);
if (!visa2.equals("4111111111111111")) {
driver.findElement(By.id("inputcardNumberField")).clear();
driver.findElement(By.id("inputcardNumberField")).sendKeys("4111111111111111");
}
希望这个答案能帮助您理解为什么(!visa2.equals(“4111111111”)在您的情况下总是正确的 当您在“inputcardNumberField”中输入值时,它是在字段中输入的,但如果您在输入值后观察页面的HTML文档,则“inputcardNumberField”webelement将不会有任何文本 因此
String visa2=visa.getText()
语句将只存储“”
(空白字符串)
这就是为什么
如果(!visa2.equals(“4111111111”)
总是在运行您的案例。您刚才在字段中调用了sendKeys()
。为什么需要检查您发送的密钥是否在现场?这听起来像是您在测试selenium的行为是否与它所宣传的一样。您是否尝试调试代码,例如检查visa2
的实际值?然后你自己就会明白为什么它会这样做。visa.getText()将返回介于两者之间的任何内容,而不是文本字段本身的值。要获取当前值,您需要执行javascript。如果硒对这个字段的打字速度太快,您可能会考虑将字符串拆分为字符,并在一些睡眠中循环。我这样做是为了更准确地模拟用户键入:@andreas I。。它没有打印出任何东西。。因此,我没有得出一个价值——这是有道理的。