Python 硒提交按钮在日期选择器后不起作用
python selenium submit button not working after date picker
我正在尝试通过python使用Selenium提供日期字段。网站中的日期字段有一个日期选择器,其中显示了两个月。以下是有关该元素的详细信息。
<input id="depart-date-webform-client-form-1642116421-4" class="fcl-datepicker-widget-desktop fcl-datepicker-widget form-text required hasDatepicker" data-type="departing" data-cid="webform-client-form-1642116421-4" autocomplete="off" placeholder="dd/mm/yy" name="submitted[startDate]" value="" size="60" maxlength="128" type="text">
我将光标放在该字段中,然后等待 2 秒钟,直到日期选择器 id 出现,并尝试通过选择日期的 ID 来输入日期。
self.driver.find_element_by_xpath("//input[@id='depart-date-webform-client-form-1642116421-4']").click()
WebDriverWait(self.driver, 2).until(
lambda d: d.find_elements_by_id('ui-datepicker-div')[0].is_displayed())
self.driver.find_element_by_xpath("//div[@id='ui-datepicker-div']//td[@data-year='2016'][@data-month='2']/a[@class='ui-state-default'][text()='19']").click()
当我尝试通过硒调用 Firefox 来模拟该操作时,我可以看到在字段中成功选择了日期。我的脚本中的下一行是这样的,
self.driver.find_element_by_xpath('//input[@type="submit"]').click()
但是我收到以下错误。
selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (136, 15.399993896484375). Other element would receive the click: <td class=" ui-datepicker-other-month ui-datepicker-unselectable ui-state-disabled"></td>
请指出我正确的方向。
注意:有时这是有效的,多次一次。满分 5 次,1 次它正在工作。其余时候我收到此错误。
谢谢。
要修复它,需要做几件事:
- 等待"提交"按钮可单击 "
- 滚动到元素的视图
- 改进了提交按钮 XPath 表达式
完整的工作代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.maximize_window()
driver.get("http://www.flightcentre.co.nz/")
driver.find_element_by_xpath("//input[@id='depart-date-webform-client-form-1642116421-4']").click()
wait = WebDriverWait(driver, 2)
wait.until(lambda d: d.find_elements_by_id('ui-datepicker-div')[0].is_displayed())
driver.find_element_by_xpath("//div[@id='ui-datepicker-div']//td[@data-year='2016'][@data-month='2']/a[@class='ui-state-default'][text()='19']").click()
wait = WebDriverWait(driver, 10)
search = wait.until(EC.element_to_be_clickable((By.XPATH, '//div[@id = "edit-actions"]//input[@type="submit" and @name = "op"]')))
driver.execute_script("arguments[0].scrollIntoView()", search)
search.click()
我认为
这是你的问题,因为有几个输入带有type=submit。 它们实际上并不在网站上,而是在您单击的提交上方的 dom 中。
self.driver.find_element_by_xpath('//input[@type="submit"]').click()
尝试并指定 ID "编辑-提交"和名称"op" 我不完全确定为什么 Alecxe 的答案不适合您。 但我相当确定这就是你的问题所在。 如果你在 dom 中执行 control-f,你可以在顶部附近看到一个带有"input type='submit'"的按钮。
尝试:
self.driver.find_element_by_xpath('//input[@type="submit"][@id="edit_submit]').click()
相关文章:
- 属性选择器不起作用(语法错误、无法识别的表达式)
- asp.net jquery 日期选择器不起作用
- 在mvc上使用日期选择器不起作用
- JavaScript id 选择器不起作用?不知道出了什么问题
- 在下拉列表中更改选择器不起作用
- 引导时间选择器不起作用
- CSS - 父子选择器不起作用
- CSS 中的选择器不起作用
- jQuery-UI 日期选择器不起作用
- 日期时间选择器不起作用.不明白怎么写JS
- CSS 选择器不起作用
- CSS 不选择器不起作用
- AngularJS指令,jQuery类选择器不起作用
- Jquery UI 日期选择器不起作用
- 添加新行动态引导日期时间选择器不起作用
- 多个jquery或javascript和日期选择器不起作用
- 带有 “.” “_” 的 Jquery 选择器不起作用
- jQuery动态创建的日期选择器不起作用
- 字符串和变量连接作为jQuery选择器不起作用.可能的原因是关闭
- 模式中的引导日期选择器不起作用