如何使用Selenium Webdriver在以下URL上选择日期

时间:2018-10-29 14:39:57

标签: selenium selenium-webdriver

http://www.hkexnews.hk/sdw/search/mutualmarket.aspx?t=sh

我找到ID为'txtShareholdingDate'的元素,然后尝试使用“ send_keys('201 8/10/24')无效

任何想法。谢谢

1 个答案:

答案 0 :(得分:2)

readonly属性表示您无法使用send_keys方法设置文本字段的值。

如果您不需要脚本来模拟类似用户的行为,则可以按以下方式实现JavaScriptExecutor

input_field = driver.find_element_by_id('txtShareholdingDate')
driver.execute_script('arguments[0].value="2018/10/24";', input_field)
driver.find_element_by_xpath('//input[@type="submit"]').click()

如果您需要选择日期作为用户,请执行以下操作:

import time

input_field = driver.find_element_by_id('txtShareholdingDate')
input_field.click()
time.sleep(1)
driver.find_element_by_xpath('//b[@class="year"]//li[.="2018"]').click()
time.sleep(1)
driver.find_element_by_xpath('//b[@class="month"]//li[.="10"]').click()
time.sleep(1)
driver.find_element_by_xpath('//b[@class="day"]//li[.="24"]').click()
time.sleep(1)
driver.find_element_by_xpath('//input[@type="submit"]').click()

P.S。您可能还需要使用ExplicitWait而不是time.sleep(1)

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait 

input_field = driver.find_element_by_id('txtShareholdingDate')
input_field.click()
wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//b[@class="year"]//li[.="2017"]'))).click()
wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//b[@class="month"]//li[.="11"]'))).click()
wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//b[@class="day"]//li[.="22"]'))).click()
driver.find_element_by_xpath('//input[@type="submit"]').click()