-1
Seleniumの要素からテキストを取得できません。私は次のコードを使用しようとするが、何も得られない。 Xpathヘルパーはそのような要素を1つしか表示しません。テキストフォーム要素を取得できません
コード私が使用します。
protected const string ERROR_FORM = "//p[contains(@data-bind, 'invalid')]";
[FindsBy(How = How.XPath, Using = ERROR_FORM)]
protected IWebElement ErrorForm { get; set; }
public string GetErrorText() {return ErrorForm.Text;}
HTMLコード:
<p class="g-textfield__error" data-bind="if: tokenError() === 'invalid'">Invalid
code. Check the code you have entered and try again.</p>
<p class="g-textfield__error" data-bind="if: tokenError() === 'expired'"></p>
問題は、以前のコードで発見されました。コードは次のとおりです。
public string GetErrorText()
{
CustomTestContext.WriteLine("Получить сообщение об ошибке.");
if (!IsInvalidCodeErrorMessageAppeared())
{
throw new XPathLookupException("Произошла ошибка:\n не появилось сообщение об ошибке.");
}
return ErrorForm.Text;
}
public bool IsInvalidCodeErrorMessageAppeared()
{
CustomTestContext.WriteLine("Проверяем появилось ли сообщение об ошибке");
return Driver.WaitUntilElementIsAppear(By.XPath(ERROR_FORM));
}
表示する前に要素をチェックしたようです。 Driver.WaitUntilElementIsDisplayのDriver.WaitUntilElementIsAppearearを変更すると、テキストが正しく検出されました。 それは、あなたが完全なコードを見なかったので、あなたが私を助けなかったことです。申し訳ありませんが、私の間違い、私はあまりにも緑色です。次回は完全なコードやgit repへのリンクを提供します。私はあなたを助けようと努力してくれて大変です。
あなたはあなたのコードPageFactory.InitElements'in '呼び出していますか?次のようなものがあります: 'PageFactory.InitElements(webDriver、this);' これは 'FindsBy'属性を使うときには不可欠です。 – Marcel
はい、PageFactoryが使われています。 FindsByが初期化されます。これは問題ではありません。 –
もっとコードを提供できますか?あなたのコードのどの時点で 'GetErrorText();'を呼びますか?あなたのXPathは、提供されたhtmlの – Marcel