繁体   English   中英

如何使用 JavaScript 在日历中单击 Selenium 的年份

[英]How to click on a year in calendar with Selenium using JavaScript

我正在尝试使用 JavaScript 编写 Selenium 测试,但无法填充日历数据。 它使用下拉菜单:

const {Builder, By, Key} = require('selenium-webdriver')


const test2 = async () => {

let driver = await new Builder().forBrowser('chrome').build()
await driver.manage().window().maximize()
await driver.get('https://demoqa.com/automation-practice-form')
let calendar = 
driver.findElement(By.xpath("//input[@id='dateOfBirthInput']"))
await calendar.click()
let month = driver.findElement(By.xpath("//select[@class='react- 
datepicker__month-select']"))
await month.click()
await month.sendKeys(Key.DOWN, Key.DOWN, Key.RETURN)

let year = driver.findElement(By.xpath("//select[contains(@class,'react-datepicker__year-select')]")).value = "1988"

我怎样才能点击我需要的价值? 控制台记录年份给我 1988,但我不知道如何在浏览器中输入 select。 除了按Key.DOWN 35次之外还有别的方法吗? 我无法在 JavaScript 中使用 Select class。

您可以使用选项标签直接在下拉列表中设置值,而无需打开它。 此外,如果在下拉列表中找不到您的选项,则会抛出错误。 您可以在 try 块中处理它

month = "May"
year = "1988"
let driver = await new Builder().forBrowser('chrome').build()
await driver.manage().window().maximize()
await driver.get('https://demoqa.com/automation-practice-form')
let calendar = driver.findElement(By.xpath("//input[@id='dateOfBirthInput']"))
await calendar.click()
let month = driver.findElement(By.xpath("//select[@class='react-datepicker__month-select']/option[text()='"+month+"']"))
await month.click()

let year = driver.findElement(By.xpath("//select[contains(@class,'react-datepicker__year-select')]/option[text()='"+year+"']"))
await year.click()

没有JavaScript环境。 但是执行 javascript 就可以了。

使用 Python 客户端:

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#dateOfBirthInput")))
driver.execute_script("arguments[0].value = arguments[1]", element, "24 Jan 2023")

浏览器快照:

出生日期


在控制台中执行

命令

document.getElementById('dateOfBirthInput').value='24 Jan 2023'

快照:

安慰

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM