0

これまで、私は単純な手法を使用して xpath を定義し、セレン アクションを呼び出して 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# は強力ではないため、これはうまくいきません。誰かが私の方法を修正するのを手伝ってくれますか? 助けていただければ幸いです。

4

3 に答える 3

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")

これにより、ライブラリ内の関数が呼び出され、指定された手順が実行されます。

メモ帳の限られたリソースでこれを作成したので、構文が間違っている可能性があります。

私の提案から、uはそのライブラリ関数にページがロードされるのを待つことを使用すべきではありません。

ありがとう。

于 2012-05-02T05:33:44.727 に答える
0

あなたはこのようなことを試すことができます

 public void ClickSave(Element element, IWebDriver webDriver)
        {
            if (webDriver.FindElement(By.LinkText(element.Text)).Enabled)
            {
                element.Click();
            }
        }

いくつかの助けになることを願っています

于 2012-05-01T14:54:59.500 に答える
0

最終的に選んだデザインはこんな感じ。

私のテスト スクリプトでは、新しいセレン コマンドを呼び出します。

selenium.ClickAndWait(Menu.Home);

Extensions という新しいクラスがあり、この中に「ClickAndWait」という専用のメソッドがあります。

public static class 拡張機能 {

    public static void SelectAndWait(this ISelenium selenium, string locator)
    {
        selenium.WaitForElementPresent(locator);
        selenium.Select(locator);
    }
}

そして、ホームなどのメソッドを備えた専用のメニュークラスがまだあります。

public class Menu { public const string Home = "//ul[@class='menunavigation']/li/a[contains(text(),'Home')]"; }

あなたのすべての提案とガイダンスの人々に感謝します:)ベニー

于 2012-05-02T15:51:20.197 に答える