Java 在“星期几”文本字段中输入值

Java 在“星期几”文本字段中输入值,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我有一个场景,需要在文本字段中发送值。值为1或0,具体取决于一周中的当前日期。在下面的场景中,我需要输入“0”表示当前日期,输入“1”表示剩余日期。我希望,由于是星期二,我会在星期二文本字段中得到“0”,但在所有文本字段中都显示为0。下面是我从周日到周二的代码 顺便说一句:id=w_1是星期天,w-2是星期一,w_3是星期二 谢谢 public String enter0And1(String daysOfWeek) { Calendar calendar = Calendar.getInst

我有一个场景,需要在文本字段中发送值。值为1或0,具体取决于一周中的当前日期。在下面的场景中,我需要输入“0”表示当前日期,输入“1”表示剩余日期。我希望,由于是星期二,我会在星期二文本字段中得到“0”,但在所有文本字段中都显示为0。下面是我从周日到周二的代码

顺便说一句:
id=w_1
是星期天,
w-2
是星期一,
w_3
是星期二

谢谢

public String enter0And1(String daysOfWeek) {

Calendar calendar = Calendar.getInstance();
int currentDay = calendar.get(Calendar.DAY_OF_WEEK);

WebElement sun = driver.findElement(By.id("w_1"));
    sun.sendKeys(Keys.CONTROL + "a");
    sun.sendKeys(Keys.DELETE);

    if(driver.findElement(By.id("w_1")).equals(currentDay)){
    sun.sendKeys(current_day_zero); 

    }
    else {
    sun.sendKeys(current_day_one);
    }



    WebElement mon = driver.findElement(By.id("w_2"));
    mon.sendKeys(Keys.CONTROL + "a");
    mon.sendKeys(Keys.DELETE);

    if(driver.findElement(By.id("w_2")).equals(currentDay)){
    mon.sendKeys(current_day_zero); 

    }
    else {
    mon.sendKeys(current_day_one);
    }


    WebElement tues = driver.findElement(By.id("w_3"));
    tues.sendKeys(Keys.CONTROL + "a");
    tues.sendKeys(Keys.DELETE);

    if(driver.findElement(By.id("w_3")).equals(currentDay)){
    tues.sendKeys(current_day_zero); 

    }
    else {
    tues.sendKeys(current_day_one);
    }

return daysOfWeek;



} 
星期二的HTML格式:

<tr>
<td><div width="60%" class="form_label" id="w_3_label">
Tuesday
</div>
</td>
<td><input type="text" id="w_3" onchange="calculateAvgDI()" value="" size="9" maxlength="9" name="dailyWeightGoal(tuesday)">
</td>

星期二

问题在于,您试图将
WebElement
currentDay
int进行比较。相反,请在
getAttribute()
的帮助下使用实际输入值

替换:

if(driver.findElement(By.id("w_1")).equals(currentDay)){
    sun.sendKeys(current_day_zero);
}
else {
    sun.sendKeys(current_day_one);
}
与:


Alecxe已经指出了你所面临的问题。作为替代,您可以尝试使用这段代码

String day = new Date().toString().split(" ")[0]; //returns day of week as for eg. Wed
List<WebElement> days = driver.findElements(By
        .xpath("//input[contains(@name,'dailyWeightGoal')]")); // Will get list of all input elements
for (WebElement webElement : days) {
    if (webElement.getAttribute("name").contains(day.toLowerCase())) // since the attribute name contains day, 
                                                                    //so checking like wise according to scenario
        webElement.sendKeys("0");
    else
        webElement.sendKeys("1");
}
String day=new Date().toString().split(“”[0]//返回星期几,如星期三
列表天数=驱动程序的findElements(按
.xpath(“//input[包含(@name,'dailyWeightGoal')]);//将获取所有输入元素的列表
for(WebElement WebElement:days){
如果(webElement.getAttribute(“name”).contains(day.toLowerCase())//由于属性名包含day,
//因此,根据场景进行明智的检查
webElement.sendKeys(“0”);
其他的
webElement.sendKeys(“1”);
}

你为什么在星期二做了
driver.findElement
与其他两天不同的事?哦,这是因为我抓住了星期二的名字。我也尝试过ID,但运气不好。你能分享任何一天的html吗?@VivekSingh为我添加了htmlTuesday@alecex,它部分工作。现在是星期三(12:20),它显示了1,而不是0。
String day = new Date().toString().split(" ")[0]; //returns day of week as for eg. Wed
List<WebElement> days = driver.findElements(By
        .xpath("//input[contains(@name,'dailyWeightGoal')]")); // Will get list of all input elements
for (WebElement webElement : days) {
    if (webElement.getAttribute("name").contains(day.toLowerCase())) // since the attribute name contains day, 
                                                                    //so checking like wise according to scenario
        webElement.sendKeys("0");
    else
        webElement.sendKeys("1");
}