到目前为止,我一直在使用一种直接的技术来定义我的xpath并调用selenium动作来使用xpath。例如:
使用测试脚本编写代码 -
selenium.WaitForElementPresent(Menu.Home);
selenium.Click(Menu.Home);
selenium.WaitForPageToLoad(null);
方法中的代码 -
public class Menu
{
public const string Home = "//ul[@class='menunavigation']/li/a[contains(text(),'Home')]";
}
......继续我的下一步行动。
但这不是一个好习惯,因为我不必要地在我的测试脚本中复制代码。所以我想构建包含额外等待等的类方法,以便我的测试脚本只包含行:
selenium.Click(Menu.Home);
我的方法看起来像这样:
public static void Home(string xpath, object selenium)
{
xpath = "//ul[@class='gts-ribbon']/li/a[contains(text(),'Home')]";
selenium.WaitForElementPresent(xpath);
"now perform the click command"
selenium.WaitForPageToLoad(null);
}
但这对我不起作用,因为我的C#并不强大。 有人可以帮我修复我的方法。我非常感谢任何帮助。
答案 0 :(得分:0)
你可以试试这样的事情
public void ClickSave(Element element, IWebDriver webDriver)
{
if (webDriver.FindElement(By.LinkText(element.Text)).Enabled)
{
element.Click();
}
}
希望有所帮助
答案 1 :(得分:0)
在库文件中创建这样的函数。
public void isPresentClick(DefaultSelenium selObj,string locator)
{
selenium.WaitForElementPresent(locator);
selenium.Click(locator);
selenium.WaitForPageToLoad(3000);
}
当您按以下方式要求时,请勿调用此功能 创建库的对象(obj)并使用该函数。
object obj = new library();
obj.isPresentClick(selenium,"Menu.Home")
这将调用库中的函数并执行其中指定的步骤。
语法可能有误,请检查我在记事本中的有限资源中做了这个。
根据我的建议,你不应该使用等待页面来加载该库函数。
感谢。
答案 2 :(得分:0)
这是我最后选择的设计:
在我的测试脚本中,我调用了一个新的selenium命令:
selenium.ClickAndWait(Menu.Home);
我有一个名为Extensions的新类,在此我有一个名为'ClickAndWait'的专用方法:
public static class Extensions {
public static void SelectAndWait(this ISelenium selenium, string locator) { selenium.WaitForElementPresent(locator); selenium.Select(locator); } }
我仍然使用我的Home等方法提供我的专用菜单类:
公共课菜单 { public const string Home =“// ul [@ class ='menunavigation'] / li / a [contains(text(),'Home')]”; }
感谢您的所有建议和指导人员:) 尼