【发布时间】:2016-01-13 14:37:36
【问题描述】:
public void profileSection(String displayName, String fName, String lName, String Address_1,) throws Exception
{
myAccountPageNative(CONSTANTs.MY_ACCOUNT_LINK);
clickLink(CONSTANTs.MY_PROFILE_SECTION);
if(driver.findElement(By.cssSelector(CONSTANTs.DISPLAY_NAME_TXTBOX)).isDisplayed())
{
log.step("Optional..... BUT you will need it when Commenting on any article....");
elementPresent_Click(By.cssSelector(CONSTANTs.DISPLAY_NAME_TXTBOX), displayName);
Thread.sleep(2000);
}else if(driver.findElement(By.cssSelector(CONSTANTs.MYACCT_EMAIL_TXTBOX)).isDisplayed())
{
log.step("Check if Email txtbox is enabled or not...... pls wait.");
txtBoxDisabled(By.cssSelector(CONSTANTs.MYACCT_EMAIL_TXTBOX),null);
Thread.sleep(2000);
log.step("Text box is disabled..... move to next step");
Thread.sleep(2000);
}else if(driver.findElement(By.cssSelector(CONSTANTs.FIRST_NAME)).isDisplayed())
{
log.step("Input First Name......");
txtBoxDisabled(By.cssSelector(CONSTANTs.FIRST_NAME),fName);
Thread.sleep(2000);
}else if(driver.findElement(By.cssSelector(CONSTANTs.LAST_NAME)).isDisplayed())
{
log.step("Input Last Name......");
txtBoxDisabled(By.cssSelector(CONSTANTs.LAST_NAME),lName);
Thread.sleep(2000);
}else if(driver.findElement(By.cssSelector(CONSTANTs.ADDRESS_1)).isDisplayed())
{
log.step("Input Address 1......");
txtBoxDisabled(By.cssSelector(CONSTANTs.ADDRESS_1),Address_1);
Thread.sleep(2000);
}
log.step("Click Save Changes Button......");
txtBoxDisabled(By.cssSelector(CONSTANTs.SAVE_CHANGES_BTN),null);
}
请尝试使用开关而不是过多的 if 语句。只是为了让我的代码更具可读性。由于 switch 评估单个变量,我可以在我的代码中使用 switch,因为我猜它看起来有点复杂。 请提出建议,因为所有元素都有不同的元素需要使用 css Selector 进行选择。
提前致谢。
【问题讨论】:
-
在任何时候只有其中一个元素有
isDisplayed() == true吗?是否保证任何时候都准确无误? -
看看这个 stackoverflow 帖子:stackoverflow.com/questions/28049094/…
-
@Erick ...不,一切都将始终正确,因为在 .sendKeys() 之前首先验证文本框。因此,如果显示文本框/按钮,则 sendKey。该代码工作正常,但只是想知道我是否可以使用 switch,因为我在不同阶段验证不同的元素。它是一个显示所有文本框的帐户页面。文本框是可选的,但只是出于测试目的进行验证。
-
那我真的不明白。你在做一个
if/else-if/else的条件永远都是真的吗?我们中的一个人很困惑。 -
@Erick .....我现在才想到...你说得对。我应该只检查禁用的文本框。由于其他文本框将始终为真,那么我不需要 if 语句,只需 .sendKeys() 就可以了……由于文本框是可选的,因此它们不需要验证。 ......谢谢你的光。