我已经通过类似的声音问题阅读了几个问题/答案,但我没有找到解决我的问题的方法,并且在过去的几个小时里一直绞尽脑汁,所以这里就是这样。
在我正在编写测试的Web表单上,有几个下拉列表,如果从其中任何一个中选择“不知道”选项,将显示一个复选框,需要选择或表单不能提交。
我将所选值存储为字符串,然后单击IF语句中的复选框,检查这些下拉值是否为“不知道”(下拉列表中的实际值记录为“不知道” ):
String drpdwn_WAN = driver.findElement(By.id("idontknow4")).getAttribute("value");
String drpdwn_SFTPAuthMethod = driver.findElement(By.id("idontknow5")).getAttribute("value");
String drpdwn_SFTPCreds = driver.findElement(By.id("idontknow6")).getAttribute("value");
String drpdwn_Bandwidth = driver.findElement(By.id("idontknow7")).getAttribute("value");
String drpdwn_Data = driver.findElement(By.id("idontknow8")).getAttribute("value");
//click on the Understood check box (only appears when 'Don't know' option is selected)
if(drpdwn_WAN == "Dont know" || drpdwn_SFTPAuthMethod == "Dont know" || drpdwn_SFTPCreds == "Dont know" || drpdwn_Bandwidth == "Dont know" || drpdwn_Data == "Dont know"){
driver.findElement(By.name("understand")).click();
}
我已经在调试模式下运行代码,并确认下拉值正确存储,但即使至少有一个下拉值是“不知道”,它也不会在IF语句中运行代码而是只是忽略它。
我编写了测试,以便从下拉列表中选择的选项是随机的,因此需要大量的条件逻辑来验证页面上的其他元素,例如复选框。因此,上面只是我的代码中的IF / ELSE语句类型的一个例子,但似乎所有IF / ELSE语句中包含的代码都没有被执行,而是被忽略并传递。任何人都可以向我解释我在这里做错了什么以及为什么IF语句似乎没有被执行?
这是我第一次在这里发布,如果任何信息缺乏或不清楚,请致歉。如果解决方案相当简单但我是Java开发世界的新手,也会道歉。
提前感谢您提供的任何帮助!
阅读stackoverflow.com/questions/513832/后,似乎我应该使用.equals()
而不是==
进行字符串比较。一旦我用==
取代.equals()
,代码按预期工作
if(drpdwn_WAN.equals("Dont know") || drpdwn_SFTPAuthMethod.equals("Dont know") || drpdwn_SFTPCreds.equals("Dont know") || drpdwn_Bandwidth.equals("Dont know") || drpdwn_Data.equals("Dont know")){
driver.findElement(By.name("understand")).click();
}