Python&Selenium无法在日期选择器中选择日期
我对Python非常陌生,并且学习如何使用Selenium来取消数据。 (编辑:Python&Selenium无法在日期选择器中选择日期
我试图挑选从一个datepicker形式的日期monmondo.com(例如着想)
这是我设法得到最远时遇到一个问题,我设法走远一点比以前,但我仍然坚持)
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("https://www.momondo.com")
browser.implicitly_wait(5)
date = browser.find_element_by_name("ctl00$Content$ctl04$SearchFormv8$SearchFormFlight$InputDepart").click()
browser.implicitly_wait(5)
test= browser.find_elements_by_xpath("//*['ui-datepicker-div']//td[@data-year='2017'][@data-month='2']/a[@class='ui-state-default'][@href='#'][text()='20']")
test[0].click()
导致
selenium.common.exceptions.ElementNotVisibleException: Message:
我已经测试仪firepath的XPath和它似乎正常工作,因为它是foun d在页面的源代码中。
日历的天源代码的网页结构为:
<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>
我模糊的猜测是,该数据甚至点击触发的选择,但它似乎是位于班以上步骤:当我可以找到号码。这是说我不确定是这样。
我真的很感激,如果你能帮助像我这样的新人!
谢谢!
尝试添加一些时间才能等到元素变得可见:
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()
非常感谢这段代码! 起初,当我跑了它,它等到超时打开弹出,所以要仔细检查我跑到另一台计算机上,那里,奇迹,它的工作! 我认为这与我第一次运行硒时意外丢弃的消息有关,问题是我不知道如何改正它,但这是另一回事。 –
欢迎。如果我的回答帮助您解决了当前问题,请将其标记为“已接受”。谢谢 – Andersson
完成了,再次感谢! 如果我找到Firefox的解决方案,我会发布它,到目前为止,我删除了Geckodriver和pref文件,它仍然无法正常工作。 我会尽量刷干净。 –
ElementNotVisibleException,好了,该元素是不可见的。你能在浏览器中看到这个元素吗? – Usmiech
被人说,这听起来很直接!代码点击打开日历,但不幸的是没有任何反应。 它可能与弹出窗口有关吗? 非常感谢您的意见。 –
因此,选取器在弹出窗口?如果没有,并且你不能在selenium中单击它,那么可以使用像$(“css_selector”)这样的jquery。click() Selenium可以执行JS。 这不应该引发错误,但一定要在浏览器中检查开发者控制台。顺便说一句。 monmondo.com显示一些日本托管网站 – Usmiech