我有很多测试。有时,如果找不到元素,只需点击屏幕的左上角即可。这种情况并非始终如此发生。我不确定为什么会这样。在我的setUp方法中,我告诉它点击元素"最大化"但是,如果它找不到那个元素,我会将它放入捕获并忽略它。出于某种原因,当它无法找到元素时,它只需点击屏幕左上角的应用会话。
有没有人知道为什么会这样,或者只是硒有时会如何回应
我的代码如下
private string wordId = OfficeVersion.Word();
private string excelId = OfficeVersion.Excel();
private string powerPointId = OfficeVersion.PowerPoint();
private const string AppDriverUrl = "http://127.0.0.1:4723";
public static WindowsDriver<WindowsElement> excelSession;
public static WebDriverWait webDriverWait;
xl.Workbook WB;
public static bool skipTearDown = false;
WindowsElement create;
WindowsElement blankWorkBook;
public static DesiredCapabilities appCapabilities = new DesiredCapabilities();
[TestInitialize]
appCapabilities.SetCapability("app", excelId);
var initialSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), appCapabilities);
var capabilities = new DesiredCapabilities();
capabilities.SetCapability("app", "Root");
excelSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), capabilities);
webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(10));
CommonMethods.keyCheck(excelSession);
webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(10));
CommonMethods.IsElementDisplayed(excelSession, new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), "CreateErrorIcon", "Create error when launching Excel");
try
{
如果它不存在,这是我忽略的元素
webDriverWait.Until(ExpectedConditions.ElementToBeClickable(excelSession.FindElementByName("Maximize"))).Click();
}
catch (Exception)
{
//ignore
}
答案 0 :(得分:0)
您可以先尝试获取当前窗口句柄,然后尝试找到并获取指向窗口最大化按钮的Webelement。可能,您可能还需要在WebElement上进行简单的等待以确保安全。
这个api对于selenium的C#客户端可能很有用 - driver.SwitchTo()。Window(句柄)
有关详细信息,您可以查看here
答案 1 :(得分:0)
尝试从组合框中选择项目时遇到了同样的问题。尝试单击该项目始终只会导致单击屏幕左上方。超级沮丧。
我通过使用“动作”将鼠标移到元素上然后单击来解决它。
var a = new Actions(Session);
a.MoveToElement(v);
a.Click();
a.Perform();