Meg*_*-90 5 c# selenium selenium-webdriver
我是 Selenium 的新手,之前使用过 Telerik 免费测试框架。问题是我无法理解,如何使用已经用 [FindsBy] 识别的元素来等待、检查和点击。
前任:
[FindsBySequence]
[FindsBy(How = How.Id, Using = "container-dimpanel")]
[FindsBy(How = How.CssSelector , Using = ".btn.btn-primary.pull-right")]
public IWebElement UpdateButton { get; set; }
internal void ClickUpdateButton(TimeSpan timeout)
{
new WebDriverWait(_driver, timeout).
Until(ExpectedConditions.ElementIsVisible(By.CssSelector(id));
UpdateButton.Click();
}
Run Code Online (Sandbox Code Playgroud)
我希望我的代码等待更新按钮可见,然后单击它。但我只想传递 UpdateButton 元素而不是使用 By 选择器。
小智 4
接受 WebElement 的可见性有一个预期条件: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#visibilityOf-org.openqa。 selenium.WebElement-
Until还返回正在等待的元素,因此您可以将其合并为一行:
internal void ClickUpdateButton(TimeSpan timeout)
{
WebDriverWait wait = new WebDriverWait(_driver, timeout);
wait.Until(ExpectedConditions.visibilityOf(UpdateButton)).click();
}
Run Code Online (Sandbox Code Playgroud)
然而,在我的框架中,我通常添加一个辅助函数来执行此操作,因为它被广泛使用。您还可以通过等待可点击等来执行类似的操作,并具有接受 WebElement 或 By 的方法:
public WebElement waitThenClick(WebElement element)
{
WebDriverWait wait = new WebDriverWait(_driver, timeout);
return wait.Until(ExpectedConditions.visibilityOf(UpdateButton)).click();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2545 次 |
| 最近记录: |