当前位置: 首页 > 知识库问答 >
问题:

当所需元素尚不存在时硒的作用链

班昱
2023-03-14

如果在动作链开始执行之前所需的元素之一不存在,那么是否可以在selenium中创建动作链?

source = driver.find_element(...)
target = driver.find_element(...)
ActionChains(driver).drag_and_drop(source, target)
source = driver.find_element(...)
drag_and_drop = ActionChains(driver)
drag_and_drop.click_and_hold(source)
drag_and_drop.move_by_offset(10, 10)
drag_and_drop.perform()

target = driver.find_element(...)
drag_and_drop.move_to_element(target)
drag_and_drop.release()
drag_and_drop.perform()

这也不起作用。似乎鼠标在第一次执行后被释放,这将导致目标消失。这似乎表明需要一个带有perform()调用的操作链。我试着研究,看看是否有任何方法可以懒洋洋地找到一个元素,当它的作用链的步骤是需要的,但我找不到任何方法做到这一点。

有没有办法在硒中实现这样的东西?

共有1个答案

太叔经赋
2023-03-14

这实际上是一个误诊问题的案例。根本问题实际上在于selenium目前不支持本机HTML5拖放,这个答案可以更好地解释这一点。因此,无论所需的元素是否存在,所给出的两个示例都不能用于该目的,即使它们看起来应该这样做。

由于操作链的开始处不存在元素的问题,解决方案实际上是使用多个perform()调用将其分成多个部分,如第二个示例所示。同样,在问题中得出的多个performe()调用不起作用的结论是不准确的,是误解真正问题的结果。

 类似资料:
  • 在实时自动化中,在对每个元素执行操作之前,我们是否检查它们的存在(在测试中)? 只要有一个语句,就有可能出现NoTouchElementException。我的问题是我们是否每次都检查元素的存在? 是否每个语句都需要被块包围?

  • 我正在自动化一个枯燥的数据输入任务,所以我创建了一个程序,基本上是使用Selenium为我点击和键入。它跑得很好!除非它到达这个特定的“编辑详细信息...”元素,但是,无论我尝试什么方法,selenium都无法找到该元素。 我尝试使用一个CSS选择器来访问ID,但没有成功。我还尝试使用XPATH,并尝试通过给它一个带有按钮文本的'contains'语句来更加具体。最后,我使用selenium ID

  • 这是我用来使用铬Web驱动程序和python查找元素的代码行 这是每次尝试运行代码时抛出的错误 这些是标题栏上的按钮,我试图让我的代码单击html按钮 这是努力按钮的html代码,我试图使用selenium来定位它,以便它可以点击这里,但它总是说没有找到这样的元素 我甚至创建了一个单独的函数来一次又一次地找到元素并在每次成功尝试后Hibernate5秒,直到它点击了元素,但仍然没有运气它永远运行而

  • 我有一个场景,我们在Tinymce中定义了有效和无效元素。以下是这两个值: “无效的_元素”是为了防止输入JavaScript。通过以上设置,Tinymce不会阻止JavaScript,但如果我删除“valid_元素”,它就会开始工作。 我不确定我是否删除了“valid\u元素”,Tinymce将允许所有内容,这就是为什么保留“valid\u元素”。 Tinymce版本:5.6.2 相关问题,但在

  • 任何提示都会很有帮助!

  • 大家好,我正试图在网站中找到一个元素,但出于某种原因,它不允许我。该网页是Reddit的登录形式,我尝试输入用户名和密码,但当我列出所有输入时,它只出现在顶部搜索栏中。我想这是因为它就像在另一个“标签”一样,它会弹出到前面,但我不知道如何管理它。提前谢谢。