为什么 Selenium 中的日期选择器(Spice Jet 应用程序使用 JavaScript)不获取属性值?
Why doesn't Date Picker in Selenium (using JavaScript for Spice Jet application) take attribute value?
我正在使用 JavaScript 作为 Selenium 中的日期选择器。我的代码运行成功,但日期选择器中没有选择日期。
public class SpicJetBooking {
static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver","C:\Downloads\chromedriver.exe");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.get("https://www.spicejet.com/");
System.out.println("Site Opened");
Thread.sleep(3000);
driver.findElement(By.xpath("//div[contains(text(),'round trip')]")).click();
// driver.findElement(By.xpath("//div[@data-testid='return-date-dropdown-label-test-id']")).sendKeys("Wed, 23 Mar 2022");
// WebElement element = driver.findElement(By.xpath("//div[contains(text(),'Return Date')]"));
WebElement element = driver.findElement(By.xpath("//div[@data-testid='return-date-dropdown-label-test-id']"));
// element.click();
String datVal = "Wed, 23 Mar 2022";
selectDateByJS(driver, element, datVal);
System.out.println("Complete Execution");
}
public static void selectDateByJS(WebDriver driver,WebElement element, String datVal){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("argument[0].setAttribute('value','"+datVal+"');", element);
// String scriptVal = "arguments[0].setAttribute('value','\"+datVal+\"')";
// String scriptVal = "arguments[0].setAttribute('value','12-Mar-2022')";
// js.executeScript(scriptVal, element);
System.out.println("JS Executed");
}
}
我确实提到了 ,但在我看来,日期选择器已经更改,现在无法正常工作
我试过了:
$x("(//div[text()='Return Date'])/following-sibling::div/child::div")[0].innerText = 'Wed, 23 Mar 2023'
对我来说效果很好。所以你需要使用:
(//div[text()='Return Date'])/following-sibling::div/child::div** xpath as a locator and update your **selectDateByJS
执行js的方法行
js.executeScript("argument[0].innerText="+datVal, element);
完整代码:
public class SpicJetBooking {
static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver","C:\Downloads\chromedriver.exe");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.get("https://www.spicejet.com/");
System.out.println("Site Opened");
Thread.sleep(3000);
driver.findElement(By.xpath("//div[contains(text(),'round trip')]")).click();
WebElement element = driver.findElement(By.xpath("(//div[text()='Return Date'])/following-sibling::div/child::div"));
String datVal = "Wed, 23 Mar 2022";
selectDateByJS(driver, element, datVal);
System.out.println("Complete Execution");
}
public static void selectDateByJS(WebDriver driver,WebElement element, String datVal){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("argument[0].innerText="+datVal, element);
System.out.println("JS Executed");
}
}
我正在使用 JavaScript 作为 Selenium 中的日期选择器。我的代码运行成功,但日期选择器中没有选择日期。
public class SpicJetBooking {
static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver","C:\Downloads\chromedriver.exe");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.get("https://www.spicejet.com/");
System.out.println("Site Opened");
Thread.sleep(3000);
driver.findElement(By.xpath("//div[contains(text(),'round trip')]")).click();
// driver.findElement(By.xpath("//div[@data-testid='return-date-dropdown-label-test-id']")).sendKeys("Wed, 23 Mar 2022");
// WebElement element = driver.findElement(By.xpath("//div[contains(text(),'Return Date')]"));
WebElement element = driver.findElement(By.xpath("//div[@data-testid='return-date-dropdown-label-test-id']"));
// element.click();
String datVal = "Wed, 23 Mar 2022";
selectDateByJS(driver, element, datVal);
System.out.println("Complete Execution");
}
public static void selectDateByJS(WebDriver driver,WebElement element, String datVal){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("argument[0].setAttribute('value','"+datVal+"');", element);
// String scriptVal = "arguments[0].setAttribute('value','\"+datVal+\"')";
// String scriptVal = "arguments[0].setAttribute('value','12-Mar-2022')";
// js.executeScript(scriptVal, element);
System.out.println("JS Executed");
}
}
我确实提到了
我试过了:
$x("(//div[text()='Return Date'])/following-sibling::div/child::div")[0].innerText = 'Wed, 23 Mar 2023'
对我来说效果很好。所以你需要使用:
(//div[text()='Return Date'])/following-sibling::div/child::div** xpath as a locator and update your **selectDateByJS
执行js的方法行
js.executeScript("argument[0].innerText="+datVal, element);
完整代码:
public class SpicJetBooking {
static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver","C:\Downloads\chromedriver.exe");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(10));
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.get("https://www.spicejet.com/");
System.out.println("Site Opened");
Thread.sleep(3000);
driver.findElement(By.xpath("//div[contains(text(),'round trip')]")).click();
WebElement element = driver.findElement(By.xpath("(//div[text()='Return Date'])/following-sibling::div/child::div"));
String datVal = "Wed, 23 Mar 2022";
selectDateByJS(driver, element, datVal);
System.out.println("Complete Execution");
}
public static void selectDateByJS(WebDriver driver,WebElement element, String datVal){
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("argument[0].innerText="+datVal, element);
System.out.println("JS Executed");
}
}