2013-10-31 123 views
0

我添加硒的webdriver到PowerShell和创建webdriver的实例:测试是否元素存在

Add-Type -path C:\Windows\net40\WebDriver.dll 
$driver = New-Object OpenQA.Selenium.Firefox.FirefoxDriver 
$driver.Url = "https://www.google.com" 

现在我想找到输入字段:

$singleRecord = ($driver.FindElementByCssSelector("input.gbqfif")) 

我发现了几个例子,说明如何“测试如果元素存在” 在C#:

Selenium WebDriver - Test if element is present

Selenium c# Webdriver: Wait Until Element is Present

另外也引导here

IWebDriver driver = new FirefoxDriver(); 
driver.Url = "http://somedomain/url_that_delays_loading"; 
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement myDynamicElement = wait.Until<IWebElement>((d) => 
    { 
     return d.FindElement(By.Id("someDynamicElement")); 
    }); 

,但我不能建立在PowerShell中类似的东西,因为它需要时间,网页加载的元素,几乎所有我的测试失败。

回答

1

我对这个API并不熟悉,但如果您在PowerShell中使用它,但它在C#中有效,那么只需创建可从PowerShell访问的功能的C#包装程序。您可以使用Add-Type命令轻松完成此操作。从在文档页面中的第一个例子:

$source = @" 
public class BasicTest { 
    public static int Add(int a, int b) { 
     return (a + b); 
    } 
    public int Multiply(int a, int b) { 
     return (a * b); 
    } 
} 
"@ 
Add-Type -TypeDefinition $source 

[BasicTest]::Add(4, 3) 
$basicTestObject = New-Object BasicTest 
$basicTestObject.Multiply(5, 2) 

当你发现C#代码这个API,做工作,你可以扑通它变成一个C#包装类,你可以从PowerShell的调用。关键是避免功能PowerShell无法像C#静态扩展方法一样处理。

相关问题