我是Python的新手,并学习如何使用Selenium废弃数据。
我尝试从monmondo.com上的日期选择表单中选择日期时遇到问题(为了示例)
这是我设法得到的最远:(编辑:我设法比以前更进一步,但我仍然卡住了)
<td class=" " data-handler="selectDay" data-event="click" data-month="2" data-year="2017"><a class="ui-state-default" href="#">20</a></td>
<a class="ui-state-default" href="#">20</a>
结果是
Promise
我使用firepath测试xpath,它似乎正常工作,因为它可以在页面的源代码中找到。
源代码中日历日的网页结构为:
Observable
我的模糊猜测是数据 - 偶数点击会触发选择,但它似乎位于我可以找到数字的类之上。这就是说我不确定是不是这样。
如果你能帮助像我这样的新人,我真的很感激!
谢谢!
答案 0 :(得分:2)
尝试添加一些时间等待元素变为可见:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get("https://www.momondo.com")
browser.implicitly_wait(5)
# Click to open drop-down
date = browser.find_element_by_xpath("//div[@class='input _date-depart']/div[@class='ui-calendar']/input").click()
# Choose depart date
wait(browser, 10).until(EC.visibility_of_element_located((By.XPATH, "//td[@data-handler='selectDay']/a[text()='20']"))).click()
# Choose return date
wait(browser, 10).until(EC.visibility_of_element_located((By.XPATH, "//td[@data-handler='selectDay']/a[text()='30']"))).click()