我使用 Selenium WebDriver 和 C# 来实现自动化。但最近我遇到了一个问题,从 iframe 外部拖动一个元素并将其放到 iframe 内的另一个元素(或位置)上。我试图通过 Actions
类的现有方法执行拖放:(在下面的示例中,source
放置在 iframe 之外,但 target
- 里面。)
DragAndDrop(IWebElement 源,IWebElement 目标)
。由于需要切换到iframe
,我仍然遇到StaleElementException
。DragAndDropToOffset(IWebElement 源,int offsetX,int offsetY)
。在这种情况下,什么也不会发生。
我提供我的代码片段:
var source = Driver.FindElement(By.XPath(
"//div[@data-window-module-name='Sitemap'];
var actions= new Actions(Driver);
Driver.SwitchToFrame("WVTemplateFrame");
var target = Driver.FindElement(By.XPath("//iframe[@name='WVTemplateFrame']//a");
Driver.SwitchToDefaultContent();
actions.DragAndDrop(source, target).Build().Perform();
[or]
actions.DragAndDropToOffset(source, 120, 206).Build().Perform();
这两个例子都不起作用。任何帮助将不胜感激。
最佳答案
这是我使用的对我有用的代码:
internal void DragCardFromColumnToColumn(int p0, int p1)
{
var columns = driver.FindElements(By.ClassName("column"));
var cardHeader = driver.FindElement(By.ClassName("portlet-header"));
Actions builder = new Actions(driver);
IAction dragAndDrop = builder.ClickAndHold(cardHeader)
.MoveToElement(columns[0])
.Release(columns[1])
.Build();
dragAndDrop.Perform();
}
关于c# - Selenium WebDriver (C#)。将元素拖放到 iframe 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20044018/