タグ付けされた質問 「selenium」

Seleniumは、Webブラウザーを自動化するための人気のあるオープンソースツールです。このタグを使用する場合は、使用している特定のコンポーネントの他のタグも含めてください。たとえば、言語バインディング用のselenium-webdriver、selenium-ide、selenium-gridなどです。


14
Pythonを使用してSelenium WebDriverでWebElementのHTMLソースを取得する
Pythonバインディングを使用してSelenium WebDriverを実行しています。 from selenium import webdriver wd = webdriver.Firefox() 私は次のようにwebelementを取得できることを知っています。 elem = wd.find_element_by_css_selector('#my-id') そして、私は完全なページソースを取得できることを知っています... wd.page_source しかし、「要素ソース」を取得する方法はありますか? elem.source # <-- returns the HTML as a string PythonのセレンWebドライバーのドキュメントは基本的に存在せず、その機能を有効にしているように見えるコードには何もありません。 要素(およびその子)のHTMLにアクセスする最良の方法について何か考えはありますか?

28
Pythonを使用したSelenium-Geckodriver実行可能ファイルがPATHにある必要があります
私はプログラミングにPython不慣れで、約2か月前から始めて、SweigartのAutomate the Boring Stuff with Pythonテキストについて学習しています。私はIDLEを使用しており、すでにセレンモジュールとFirefoxブラウザをインストールしています。私がwebdriver関数を実行しようとしたときはいつでも、私はこれを取得します: from selenium import webdriver browser = webdriver.Firefox() 例外:- Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>> Traceback (most recent call last): File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__ self.stop() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop if self.process is None: AttributeError: 'Service' object …

30
「要素はクリックできません」エラーのデバッグ
これはChromeでのみ表示されます。 完全なエラーメッセージは次のとおりです。 「org.openqa.selenium.WebDriverException:要素はポイント(411、675)ではクリックできません。他の要素はクリックを受け取ります:...」 「クリックを受け取る」要素は、問題の要素の横にあり、その上ではなく、重なっておらず、ページ内を移動していません。 オフセットを追加しようとしましたが、それも機能しません。アイテムは表示されたウィンドウ上にあり、スクロールする必要はありません。

3
ヘッドレスブラウザとスクレイピング-ソリューション[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 5年前休業。 ブラウザーの自動テストスーツとスクレイピングが可能なヘッドレスブラウザープラットフォームの可能なソリューションのリストを掲載しようとしています。 ブラウザのテスト/スクレイピング: セレン - ポリグロットの速いテスト展開のためのブラウザの自動化におけるフラッグシップやPython、Rubyのは、JavaScript、C#、Haskellの多くのバインディング、Firefox用IDE(拡張として)。サーバーとして機能し、多くの機能を備えています。 ジャバスクリプト PhantomJS - JavaScriptは、スクリーンキャプチャと自動化によるヘッドレステストで、Webkitを使用します。バージョン1.8以降、SeleniumのWebDriver APIが実装されているため、任意のWebDriverバインディングを使用でき、テストはSeleniumと互換性があります SlimerJS - PhantomJSと同様に、WebKitの代わりにGecko(Firefox)を使用します CasperJS - PhantomJSとSlimerJSの両方に基づいて構築されたJavaScriptには、追加機能があります ゴーストドライバ - のJavaScriptの実装webdriverをワイヤプロトコルのためPhantomJS。 新しい PhantomCSS -CSS回帰テスト。PhantomJSと Resemble.jsを使用して視覚回帰テストを自動化するためのCasperJSモジュール。 新しい WebdriverCSS-視覚回帰テストを自動化するための Webdriver.ioのプラグイン 新しい PhantomFlow-テストによるユーザーフローの説明と視覚化。Webユーザーインターフェイステストへの実験的アプローチ。 新しい trifleJS -PhantomJS APIを移植して、Internet Explorerエンジンを使用します。 新しい CasperJS IDE (商用) NODE.JS ノードファントム-PhantomJSとnode.jsの間のギャップを埋めます WebDriverJs -Seleniumチームによるnode.jsのSelenium WebDriverバインディング WD.js -WebDriver / …

18
chromedriverでセレンを使用しているときにWebサイトで検出できますか?
私はChromedriverでSeleniumをテストしてみましたが、自動化がまったくなくても、一部のページでSeleniumの使用を検出できることに気付きました。SeleniumとXephyrでChromeを使用して手動で閲覧しているだけでも、不審なアクティビティが検出されたというページがよく表示されます。ユーザーエージェントとブラウザの指紋を確認しましたが、すべて通常のChromeブラウザとまったく同じです。 これらのサイトを通常のChromeで閲覧すると、すべて正常に動作しますが、Seleniumを使用した瞬間に検出されます。 理論的には、chromedriverとchromeはどのWebサーバーでも文字通りまったく同じに見えるはずですが、どういうわけかそれらを検出できます。 テストコードが必要な場合は、これを試してください: from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=1, size=(1600, 902)) display.start() chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--profile-directory=Default') chrome_options.add_argument("--incognito") chrome_options.add_argument("--disable-plugins-discovery"); chrome_options.add_argument("--start-maximized") driver = webdriver.Chrome(chrome_options=chrome_options) driver.delete_all_cookies() driver.set_window_size(800,800) driver.set_window_position(0,0) print 'arguments done' driver.get('http://stubhub.com') スタブハブを参照すると、1つまたは2つのリクエストでリダイレクトされ、「ブロック」されます。私はこれを調査しており、ユーザーがSeleniumを使用していることを彼らがどのように知ることができるかわかりません。 どうやってやっているの? 更新を編集: FirefoxにSelenium IDEプラグインをインストールしましたが、追加のプラグインのみを使用して通常のFirefoxブラウザでstubhub.comにアクセスすると禁止されました。 編集: Fiddlerを使用して、送受信されるHTTPリクエストを表示すると、「偽のブラウザー」のリクエストの応答ヘッダーに「no-cache」が含まれていることがよくあります。 編集: このような結果JavascriptからSelenium Webdriverページにいることを検出する方法はありますかWebドライバーを使用しているときに検出する方法はないはずです。しかし、この証拠はそうでないことを示唆しています。 編集: サイトはサーバーにフィンガープリントをアップロードしていますが、チェックしたところ、セレンのフィンガープリントはクロムを使用した場合のフィンガープリントと同じです。 編集: これは、サーバーに送信するフィンガープリントペイロードの1つです。 …

29
PythonとSeleniumを使用してEnter / Returnキーを入力しますか?
Seleniumで入力してEnterキーまたはReturnキーをすばやく入力する方法を探しています。残念ながら、テストしようとしているフォーム(自分のコードではなく、変更できない)には[送信]ボタンがありません。手動で作業する場合、私はちょうど入力しますENTERかRETURN。typeクリックするボタンがないので、Selenium コマンドでそれを行う方法を知る必要があります。

10
Selenium Webdriver(Python)で特定のテキストを含む要素を見つけるにはどうすればよいですか?
Seleniumで複雑なJavaScriptインターフェースをテストしようとしています(Pythonインターフェースを使用して、複数のブラウザー間で)。次の形式のボタンがいくつかあります。 <div>My Button</div> 「My Button」(または「my button」や「button」などの大文字と小文字を区別しない部分一致)に基づいてボタンを検索できるようにしたい 私はこれが驚くほど難しいことに気づき、明らかな何かを見逃しているように感じます。私がこれまでに持っている最高のものは: driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]') ただし、これは大文字と小文字が区別されます。私が試したもう1つのことは、ページ上のすべてのdivを反復処理し、element.textプロパティを確認することです。ただし、次のような状況になるたびに: <div class="outer"><div class="inner">My Button</div></div> div.outerにも、テキストとして「My Button」があります。これを修正するために、div.outerがdiv.innerの親であるかどうかを確認しようとしましたが、それを行う方法を理解できませんでした(element.get_element_by_xpath( '..')は要素の親を返しますが、テストはdiv.outerと等しくありません)。また、ページ上のすべての要素の反復処理は、少なくともChrome Webdriverを使用すると、非常に遅くなります。 アイデア? 編集:この質問は少し漠然と出てきました。より具体的なバージョンをここで尋ねました(そして答えました):子要素のテキストを含めずに、(Python APIを介して)Selenium WebDriverで要素のテキストを取得する方法は?

9
Selenium WebDriverでJavaScriptを使用してXPathで要素を取得する方法はありますか?
私は次のようなものを探しています: getElementByXpath(//html[1]/body[1]/div[1]).innerHTML JSを使用して要素のinnerHTMLを取得する必要があります(Selenium WebDriver / Javaでそれを使用するには、WebDriverがそれ自体を見つけることができないため)。 ID属性を使用できますが、すべての要素にID属性があるわけではありません。 [修繕] 私はそれをJavaで実行するためにjsoupを使用しています。それは私のニーズにうまくいきます。



30
Seleniumでビューに要素をスクロール
Selenium 1.xまたは2.xのいずれかに、ブラウザーウィンドウをスクロールして、XPathによって識別される特定の要素がブラウザーのビューに入るようにする方法はありますか?Seleniumにはfocusメソッドがありますが、FireFoxでビューを物理的にスクロールするようには見えません。これを行う方法について誰かが何か提案はありますか? これが必要な理由は、ページ上の要素のクリックをテストするためです。残念ながら、要素が表示されていない限り、イベントは機能しないようです。要素がクリックされたときに起動するコードを制御できないため、デバッグも変更もできません。そのため、最も簡単な解決策は、アイテムをスクロールして表示することです。


13
Pythonを使用してSeleniumでドロップダウンメニューの値を選択するにはどうすればよいですか?
ドロップダウンメニューから要素を選択する必要があります。 例えば: <select id="fruits01" class="select" name="fruits"> <option value="0">Choose your fruits:</option> <option value="1">Banana</option> <option value="2">Mango</option> </select> 1)最初にそれをクリックしなければなりません。私はこれをします: inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click() 2)その後、良い要素を選択する必要がありますMango。 私はそれをやってみましたinputElementFruits.send_keys(...)が、うまくいきませんでした。

10
Selenium WebDriver for Pythonでページが読み込まれるまで待ちます
無限スクロールで実装されたページのデータをすべて削り取りたい。次のpythonコードが機能します。 for i in range(100): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(5) つまり、一番下までスクロールするたびに5秒待つ必要があります。これは、ページが新しく生成されたコンテンツの読み込みを完了するのに十分な時間です。しかし、これは時間効率が良くない場合があります。ページは5秒以内に新しいコンテンツの読み込みを完了する場合があります。下にスクロールするたびに、ページが新しいコンテンツのロードを完了したかどうかをどのように検出できますか?これを検出できた場合は、ページの読み込みが完了したことを確認したら、下にスクロールしてさらにコンテンツを表示できます。これはより時間効率が良いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.