The code below doesn’t click on the dates, anyone have code that works on this?
WebElement element = androiddriver.findElement(By.id(“com.mpspark.consumer.mpsconsumer:id/mdtp_animator”));
List daysToSelect = Arrays.asList(“08 May 2024”, “09 May 2024”);
// Iterate through the list of dates and select each one
for (String day : daysToSelect)
{
// Construct the XPath locator for the day element and click on it
element.findElement(By.xpath("//android.view.View[@content-desc=\"" + day + "\"]")).click();
}
I’ve also tried this but it didn’t click on the date object.
The appium inspector says: Interactions for this element may not be available
WebElement element = androiddriver.findElement(By.id(“com.mpspark.consumer.mpsconsumer:id/mdtp_animator”));
// Get all child elements within the 'element'
List<WebElement> childElements = element.findElements(By.xpath(".//*"));
// Now you can iterate through 'childElements' to work with each individual element
for (WebElement child : childElements)
{
// Retrieve the content-desc attribute value
String contentDesc = child.getAttribute("content-desc");
if(contentDesc != null)
{
if(contentDesc.equals("08 May 2024")||contentDesc.equals("09 May 2024"))
{
child.click();
}
// Display the content-desc value
System.out.println("Content-desc: " + contentDesc);
}
}
Here is how I select the date in Android Date Pickers using c# if it helps:
public void SelectDateFromAndroidDatePicker(DateTime date)
{
var year = date.Year;
var month = date.Month;
var day = date.Day;
Thread.Sleep(1000);
IWebElement monthAndYear = _deviceDriverService.Driver.FindElement(By.XPath("//*[contains(@resource-id, 'month_navigation_fragment_toggle')]"));
IWebElement increaseMonthButton = _deviceDriverService.Driver.FindElement(By.XPath("//*[contains(@resource-id, 'month_navigation_next')]"));
IWebElement decreaseMonthButton = _deviceDriverService.Driver.FindElement(By.XPath("//*[contains(@resource-id, 'month_navigation_previous')]"));
var pickerYear = ExtractYearFromYearPicker(monthAndYear);
var pickerMonth = ExtractMonthFromYearPicker(monthAndYear);
while (year != pickerYear || month != pickerMonth)
{
Console.WriteLine("Finding correct month/year");
if (pickerYear < year)
{
increaseMonthButton.Click();
}
else if (pickerYear > year)
{
decreaseMonthButton.Click();
}
else if (pickerMonth < month)
{
increaseMonthButton.Click();
}
else if (pickerMonth > month)
{
decreaseMonthButton.Click();
}
monthAndYear = _deviceDriverService.Driver.FindElement(By.XPath("//*[contains(@resource-id, 'month_navigation_fragment_toggle')]"));
pickerYear = ExtractYearFromYearPicker(monthAndYear);
pickerMonth = ExtractMonthFromYearPicker(monthAndYear);
}
Console.WriteLine($"Final picker year and month {pickerYear}, {pickerMonth}");
var dateButton = _deviceDriverService.Driver.FindElement(By.XPath($"//*[@text='{day}']"));
dateButton.Click();
}
private int ExtractYearFromYearPicker(IWebElement yearPicker)
{
var yearPickerValue = yearPicker?.Text;
var pickerYearText = string.Concat(yearPickerValue.Where(c => char.IsDigit(c)));
var pickerYear = Convert.ToInt32(pickerYearText);
return pickerYear;
}
private int ExtractMonthFromYearPicker(IWebElement yearPicker)
{
var yearPickerValue = yearPicker?.Text;
var pickerMonthText = string.Concat(yearPickerValue.Where(c => char.IsLetter(c)));
var pickerMonth = Convert.ToDateTime($"{pickerMonthText} 01, 1900").Month;
return pickerMonth;
}