AmazonでCSSまたはXpathを使用した内部テキストの検索

私はSeleniumのWebドライバを使用して自動化を教えていて、Amazonなどのeコマースサイトから学ぶのが良い方法だと思っていました。私はCSSで内部のテキストを見つけようとしており、ページファクトリを介してログインしたユーザ名を確認するために以下を使用しました:

Locating Element with CSS:

@FindBy (how=How.CSS, using= "a:contains('Hello,Nichole')") WebElement
 loggedInUsernameText;

Error Message:

org.openqa.selenium.InvalidSelectorException: invalid selector: 
An invalid or illegal selector was specified

残念ながら、これは私のためには機能しませんでしたので、 XPath
を使用しようとしました:

@FindBy (how=How.XPATH, using= "//*[contains(text(),('Hello,Nichole')]") WebElement loggedInUsernameText;

Error Message:

    org.openqa.selenium.InvalidSelectorException: invalid selector: 
    Unable to locate an element with the xpath expression //*[contains(text(),('Hello,Nichole')] because of the following error:
    SyntaxError: Failed to execute 'evaluate' on 'Document': 
The string '//*[contains(text(),('Hello,Nichole')]' is not a valid XPath expression.

これは私のためにはうまくいきませんでした。誰かが私が間違っていることを教えてください。

CSSとXpathのロケータは次のとおりです。

こんにちは、Nichole

CSS:

#nav-link-accountList > span.nav-line-1

XPath:

//*[@id="nav-link-accountList"]/span[1]

私はおそらく何か本当にダムをやっている!私が他の情報を提供する必要があるかどうかを教えてください。コンソール上でそれを見つけるために$
0を使用するように指定します。私はそれを使用して配置しましたので、何とか実装する必要があります。

ベストアンサー

それはかなり簡単です。 XPath式と構文エラーを見てください:

XPathに不必要な括弧 "()" を追加しました。

XPath は次のとおりです:

//*[contains(text(), 'Hello,Nichole')]

Page-Factory を使用する:

@FindBy (how=How.XPATH, using= "//*[contains(text(), 'Hello,Nichole')]")
 WebElement loggedInUsernameText;

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です