2016-06-30 45 views
0

ポップアップウィンドウでダイアログテキストをクロールしたいとします。問題は、私がリンクをトリガーした後にウィンドウが表示されますが、driver.window_handlesと入力してこのサイトの他の質問から学んだように、セレンドライバーは自動的に処理できないようです。 トリガのソース:selenium-pythonを使用してダイアログからテキストを取得するにはどうすればよいですか?

enter image description here

len(driver.window_handles)の値は1です。私は幸いにも、私は

によって要素を取得して成功して、私は窓の要素を取得し、その後 get_attributesを経由してテキストを取得することができます思いました
wd = driver.find_element_by_css_selector('div[node-type="repeat_list"]') 

selenium.webdriver.remote.webelement.WebElement(セッション= "f810cbbe-db43-4e8d b484-664559ec8efc"、要素= "{dd00e689-7991-44e9-85d3-76c69e79218f}")

しかし、悲しいことに、私はその属性を知らないので、私はそれからすべてのものを取り除く方法を知らないということです。

私はそれが対話であるかどうかはわかりませんが、フロントエンドのエンジニアはアニメーションのように感じました。

enter image description here

PS:ブラウザはFirefoxのあるとにかくこれは、ソースの抜粋です。

私はそれがクロールするために私はいくつかの情報を隠す必要がありますサイトの利用規約のポリシーに違反する可能性があると思った。ごめんなさい。

+1

あなたが使っている「HTML」を共有できますか? – RemcoW

+0

は、ウィンドウポップアップまたは新しいウィンドウです – SaiPawan

+0

@saiウィンドウポップアップ、methinks。しかし、前述の要素「wd」のサブ要素からダイアログテキストを取り出しました。既存のソリューションを最適化するためにポップアップダイアログウィンドウを処理する方法を知りたいと思います。 – lerner

答えて

0

あなたの親要素を持っていたら:

wd = driver.find_element_by_css_selector('div[node-type="repeat_list"]') 

あなたは、このオブジェクトのメソッドを呼び出す続け、この順に子要素に到達することができ、あなたが例えば、element_by_xpath、またはfind element_by_class nameを見つける使用することができます。

などのように、階層の下の目的の要素に到達するまで、必要に応じてコンテンツを抽出します。

こちらがお役に立てば幸いです。

+0

あなたはそうですが、ダイアログウィンドウの方法があると思います。 – lerner

+0

セレンにそのような方法はありません。上記のようにlen(driver.window.handles)は1です。ダイアログウィンドウは現在のHTMLページの一部であるとみなされます。セレンではアラートを処理するメソッドがありますが、アラートはブラウザによってトリガされる特別な種類のイベントです。ダイアログボックスがHTML階層の一部になったら、そのように扱わなければなりません。 –

関連する問題