Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Selenium(Python)的select_by_index()方法的奇怪斗争_Python_Selenium - Fatal编程技术网

与Selenium(Python)的select_by_index()方法的奇怪斗争

与Selenium(Python)的select_by_index()方法的奇怪斗争,python,selenium,Python,Selenium,我正在编写一个小程序来自动化一些东西,这些东西需要我使用Selenium登录网站,识别一个下拉框,从下拉框中进行选择,并继续进行其他几次web单击。相当简单的东西 但是我在使用select_by_index()方法时遇到了一个非常奇怪的难题。这是我的代码片段。我在这里使用了硬编码的值来关注我的问题。Select()调用通过。我甚至可以看到日期下拉框。选项[I]。文本中加载了下拉列表中的所有值。但奇怪的是,select_by_索引(i)失败了(基本上命中了我完整程序中的“except”代码块!为了

我正在编写一个小程序来自动化一些东西,这些东西需要我使用Selenium登录网站,识别一个下拉框,从下拉框中进行选择,并继续进行其他几次web单击。相当简单的东西

但是我在使用select_by_index()方法时遇到了一个非常奇怪的难题。这是我的代码片段。我在这里使用了硬编码的值来关注我的问题。Select()调用通过。我甚至可以看到日期下拉框。选项[I]。文本中加载了下拉列表中的所有值。但奇怪的是,select_by_索引(i)失败了(基本上命中了我完整程序中的“except”代码块!为了缩小问题的范围,我注释掉了那行代码并放置了一个pdb.set_trace()每次出现中断,我都从调试器显式地调用select_by_index方法,继续这个流程,一切都正常

救命啊

简化代码段:

date_drop_box = Select(web_driver.find_element_by_id('my-id'))
print(date_drop_box.options[3].text)
date_drop_box.select_by_index(3)

如果问题中没有相关的
HTML
和整个
异常更新,我将尽全力回答这个问题

根据您在问题下的评论,您收到的
异常是
selenium.common.exceptions.Element ClickInterceptedException:Message:Element在点(142.56666564941406515.283325953125)处不可单击,因为另一个元素遮挡了它

这意味着该元素存在于
DOM
中,但当前未被选中。我以前遇到过此问题,并通过在执行单击之前滚动到选项解决了此问题。请尝试以下操作:

element = date_drop_box.options[i]
web_driver.execute_script("arguments[0].scrollIntoView(true);", element)
date_drop_box.select_by_index(i)

如果这不起作用,请用相关HTML更新问题。

你说的“不通过”是什么意思请您考虑一下为什么要这样做。请考虑用格式化的基于文本的相关HTML、代码测试和错误堆栈跟踪更新问题。如果程序在调试模式下工作,则会出现定时问题。该下拉的值是否动态填充?在索引方法之前尝试适当的睡眠。如果它工作在A中,则更健壮的显式等待条件就可以了。First timer(希望经常在这里!)在这里,为了适应DOs和DONTS,您可以提供在尝试
按索引选择时发生的错误
?非常感谢您的关注和帮助。尝试了建议的代码更改。我仍然会收到相同的错误。我可以通过什么方式附加HTML(对不起,我是新加入此论坛的)?只需将其复制并粘贴到此处即可?@SachinDesai,您可以通过编辑您的问题并将其添加到问题中,从而将相关HTML添加到问题中。请确保HTML的标准格式保持不变。在与此问题搏斗了几天并尝试了各种解决方案后,我找到了问题的原因。结果是
Select()
Select\u by\u index()
的操作是正确的。但是由于某种原因,
Select\u by\u index()
调用失败与我在使用
驱动程序打开后立即将(浏览器的)窗口大小设置为较小大小有关。设置窗口大小(400600)
call。一旦我把它注释掉,它就开始工作了。但我仍然无法解释连接