IWebElement
が表示されているかどうかを確認したいと思います。クラス内のIWebElement
に到達しようとすると問題はありませんが、それは私のKontrolElement()
関数に送信するとNullReferenceException
になります。このプロセスは何度か行われるため、KontrolElemet()
が必要です。関数に送信された後にIWebElementがnullになる
KontrolElement()
:
//This is inside a class called 'Helpers'
public void KontrolElement(IWebDriver WebDriver, IWebElement WebElement, string msg)
{
try
{
//"WebElement" is null
Assert.IsTrue(WebElement.Displayed);
}
catch (AssertionException)
{
Console.WriteLine("Kontrol: " + msg);
//Sends an E-mail with the screenshot of the page attached to it
new ScreenShot().Crush(WebDriver, msg, "");
}
}
私は( 'エル' は、一般的にforeachループでiteraredさIReadOnlyCollection内部オブジェクトである)、それを使用する方法:
//This takes place in the PageObject class which extends 'Helpers'
IWebElement el = WebDriver.FindElement(By.ClassName("listTop"));
//Console.WriteLine(el.Displayed) outputs True
KontrolElement(WebDriver, el, "el is not displayed");
は、誰もが同じような問題に直面していますこの?代替ソリューションは何ができますか?
nullにすることは不可能だと思います。 'Console.WriteLine(el.Displayed)'のコメントを外すとどうなりますか?コンソールに "true"と "el not displayed"の両方が表示されていますか? – Buaban
この話にはもっと多くのことが必要だと思われます。あなたが期待しているように物事が呼び出されていることを確認するために、プロセス全体を慎重に歩いていますか?上記のコードは最小限の形で動作しますが、私は何か明白なものを見逃していないことを確認するためにテストしました。上に示したように、 'KontrolElement'がヌル' IWebElement'で呼び出されるようになっていることが、さらに進んでいます。 – mrfreester
@mrfreester私は、 'NullReferenceException'がそれと何か関係があることを知りました。また、質問で 'KontrolElement()'を完成しました。この関数の中で 'NullReferenceException'がスローされていることは確かです。 –