我们有一个带有2个日期日历的网页,其中一个是当前日期,另一个是参考日期,它自动更新以显示小于当前日期的日期。
问题 - 使用webdriver从日历中选择日期后,单击另一个 必须自动更新日期的日历,不再更新。
如果手动执行相同的操作。 有没有人遇到类似的问题,这已成为一个阻止因为自动更新无法正常工作整个应用程序工作流失败。
删除了敏感数据
package pages;
import java.util.Calendar;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.interactions.SendKeysAction;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.webdriven.SeleniumMutator;
import com.thoughtworks.selenium.webdriven.commands.SeleniumSelect;
import utils.Waitutils;
public class CalenderPage {
WebDriver driver;
static WebDriverWait wait;
public CalenderPage (WebDriver driver){
this.driver = driver;
}
public void cobDatepick(String date){
int count=0;
WebElement cob =driver.findElement(By.xpath("//*[@id='mainview']/div/div[2]/div[1]/div/options-panel-directive/div[2]/div[1]/div/div[1]/date-picker/div[2]/div/span"));
cob.click();
WebElement mLink = driver.findElement(By.xpath("//button[contains(@id,'datepicker')]"));
String date_dd_MM_yyyy[] = (date.split(" ")[0]).split("/");
int yearDiff = Calendar.getInstance().get(Calendar.YEAR) - Integer.parseInt(date_dd_MM_yyyy[2]);
mLink.click();
WebElement pLink = driver.findElement(By.xpath("//*[@id='mainview']/div/div[2]/div[1]/div/options-panel-directive/div[2]/div[1]/div/div[1]/date-picker/div[2]/div/ul/li[1]/div/table/thead/tr[1]/th[1]/button/i"));
if(yearDiff>0){
for(int i=0;i<yearDiff;i++){
pLink.click();
}
}
List<WebElement> months1 = driver.findElements(By.xpath("//*[@id='mainview']/div/div[2]/div[1]/div/options-panel-directive/div[2]/div[1]/div/div[1]/date-picker/div[2]/div/ul/li[1]/div/table/tbody/tr/td"));
months1.get(Integer.parseInt(date_dd_MM_yyyy[1])-1).click();
List<WebElement> dates = driver.findElements(By.xpath("//*[@id='mainview']/div/div[2]/div[1]/div/options-panel-directive/div[2]/div[1]/div/div[1]/date-picker/div[2]/div/ul/li[1]/div/table/tbody/tr//td"));
int total_nodes = dates.size();
for(int i=0; i<total_nodes; i++)
{
String dat = dates.get(i).getText();
if(dat.equals(date_dd_MM_yyyy[0])&& count>0)
{
dates.get(i).click();
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.document.getElementById('date-picker-to').setAttribute('value', '30/06/2016');");
}
if(dat.equals(date_dd_MM_yyyy[0]))
{
count++;
}
}
}
}
上述类在testscript中调用
@BeforeTest
public void setup() throws Exception{
driver = new AppDriver("ie").getDriver();
driver.get("https://xyz");
driver.manage().window().maximize();
onCalenderPage = new CalenderPage (driver);
Waitutils.waitforCompletion(9000L);
}
@Test
public void test(){
onCalenderPage.cobDatepick("30/06/2016");
}