4

Splinter ライブラリを作成して reddit のメイン検索バーにテキストを入力するときに「戻る」をクリックする方法がわかりません。検索するボタンがないため、おそらく「戻る」をクリックする必要があります。

ここで同様の質問を見ましたが、私のケースと、その人が回答を書いたケースではうまくいきませんでした。

class NavigationPage(object):

    def __init__(self, br):
        self.br = br
        self.url = "http://reddit.com"

    @property
    def retrieve_reddit_search_bar(self):
        """
        Retrieves search bar by it's name
        """
        return self.br.find_by_name("q")

    def search(self, search_term):
        self.retrieve_reddit_search_bar.first.fill(search_term) # fills search bar
        self.br.execute_script("document.getElementsByName('q')[0].submit()")

search メソッドの 2 番目のステートメントでトレースバックが発生して失敗します。誰かがその方法を知っている場合は、この「リターン」クリックビジネスをすべてのウェブサイトに適用する方法も教えてもらえますか? 検索リクエストを処理するために同様のJavaScriptを実行していると思います。

4

2 に答える 2

3

よし、面白そうだった。考えはどこからともなく飛び出しましたが、ここにあります:

「Return」キーのクリックは「\n」文字に相当します。つまり、すべての検索用語は改行文字で終了する必要があります。こうすることでリターンキーが自動でクリックされ、redditで検索結果に飛べます!

したがって、コマンドは次のようになります。

b = Browser()
b.visit('http://reddit.com')
b.fill('q', 'intp\n')

selenium/splinter が検索語を埋めると、検索結果が表示されます。

于 2014-05-26T08:43:08.523 に答える
0

次のコードも機能するため、「\r」で「\n」を置き換えることができることがわかりました。

b = Browser()    
b.visit('http://reddit.com')
b.fill('q', 'intp\r')

type 関数でも機能します。

b = Browser()    
b.visit('http://reddit.com')
b.type('q', 'intp\r')

Seleniumコマンドを直接呼び出す次のコードも同じように動作するため、Selenium自体によって実装されているようです。

b = Browser() 
b.visit('http://reddit.com')
element = b.driver.find_element_by_css_selector('[name={}]'.format('q'))
element.send_keys('intp\r')

この投稿でも言及されています。

于 2015-11-02T15:08:11.300 に答える