セレンを使用してログインをシミュレートするとき、ログインボタン要素を取得した後、クリック()メソッドを直接呼び出してログインジャンプを達成でき、この時点でのWebDriverも指し示します。
これは現在のページには問題ありませんが、ログイン後にページの要素を取得する前に、ページの読み込み速度が一般的にプログラムの実行速度よりも低いため、WebDriverWaitのUTILメソッドを使用するか、Sthread.sleep()を使用してしばらくの間睡眠をとることができることに注意してください。
しかし、ブログの主なポイントは、通常のハイパーリンクをクリックして新しいページを入力すると、上記の方法で新しいページ要素を取得できないことです。
解決策:最初に、ウィンドウのすべてのハンドルを取得し、次に、ハンドルが存在するまでこのハンドルコレクションを繰り返して、現在のウィンドウのハンドル(CurrentHandle)と異なるまで、前のWebDriverを新しいハンドルで指したページに転送します。
コードは次のとおりです。
文字列currentWindow = driver.getWindowHandle(); //現在のウィンドウのハンドルを取得<string> handles = driver.getWindowHandles(); //すべてのWindowsのハンドルを取得しますiterator <string> it = handles.iterator(); WebDriver newDriver = null; while(it.hasnext()){string handle = it.next(); if(!handle.equals(currentWindow)){driver = driver.switchto()。window(handle); //新しいハンドルによって指されたウィンドウブレイクに切り替えます。 }}Seleniumに基づいて新しいページ要素を取得できないという解決策は、編集者が共有するコンテンツ全体です。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。