[英]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.