WebDriverWait不适用于DialogFragment-C#,Appium
我正在使用Appium.NET为一个Android应用程序编写一些自动测试 我需要添加一个等待来查找一个元素,因为加载它需要一些时间 如果我使用WebDriverWait不适用于DialogFragment-C#,Appium,c#,selenium,selenium-webdriver,appium,C#,Selenium,Selenium Webdriver,Appium,我正在使用Appium.NET为一个Android应用程序编写一些自动测试 我需要添加一个等待来查找一个元素,因为加载它需要一些时间 如果我使用Thread.Sleep它工作得很好,但是用WebDriverWait检查会很糟糕,但是使用WebDriverWait测试失败并且无法找到元素 工作代码: [TestMethod] public void TestMethod1() { Thread.Sleep(TimeSpan.FromSeconds(10)); IWebElemen
Thread.Sleep
它工作得很好,但是用WebDriverWait
检查会很糟糕,但是使用WebDriverWait
测试失败并且无法找到元素
工作代码:
[TestMethod]
public void TestMethod1()
{
Thread.Sleep(TimeSpan.FromSeconds(10));
IWebElement obj = driver.FindElementByXPath("//android.widget.Button[@text='Get Started']");
obj.Click();
}
[TestMethod]
public void TestMethod1()
{
var obj = driver.FindElement(By.XPath("//android.widget.Button[@text='Get Started']"), 15);
obj.Click();
}
不工作:
[TestMethod]
public void TestMethod1()
{
Thread.Sleep(TimeSpan.FromSeconds(10));
IWebElement obj = driver.FindElementByXPath("//android.widget.Button[@text='Get Started']");
obj.Click();
}
[TestMethod]
public void TestMethod1()
{
var obj = driver.FindElement(By.XPath("//android.widget.Button[@text='Get Started']"), 15);
obj.Click();
}
FindElement
是Loudenvier编写的扩展方法
日志:是线程睡眠和webdriverwait方法中的应用程序日志。谢谢你的帮助
Edit1:我试图查找的按钮元素是Android DialogFragment的一部分。当用户第一次打开应用程序时,会出现这个对话框片段,这是一种欢迎屏幕
我注意到的WebDriverWait
实际上在主应用程序片段中等待并尝试搜索元素,但失败了。但是Thread.Sleep
可以工作,因为在这种情况下,对话框片段
被加载到主应用程序片段的顶部,然后webdriver在正确的片段中搜索元素。我尝试了隐式wait
和显式wait
但结果是一样的
有没有更好的方法来等待DialogFragment?为什么不使用
显式等待并等待驱动程序找到元素?另外,在上面的代码中,find元素机制看起来不同
[TestMethod]
public void TestMethod1()
{
By byXpath = By.XPath("//android.widget.Button[@text='Get Started']");
IWebElement webElement = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(d=>d.FindElement(byXpath));
webElement.Click();
}
很抱歉,显式和隐式等待在此场景中不起作用,请在问题编辑部分查看原因。我不太熟悉Appium
,但似乎您需要以某种方式将焦点切换到DialogFragment上