2014-05-25 3 views
2

Splinter 라이브러리에서 텍스트를 reddit의 기본 검색 창에 입력 할 때 "return"을 클릭하는 방법을 알아낼 수 없으며 검색 할 단추가 없기 때문에 "return"Splinter를 사용하여 "return"을 클릭하는 방법

나는 여기에서도 비슷한 질문을 보았지만 내 경우와 그 사람이 대답을 쓴 경우에는 효과가 없었습니다.

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()") 

검색 방법의 두 번째 문장에서 추적이 실패합니다. 누군가가 어떻게하는지 알고 있다면, 모든 웹 사이트에서이 "수익"클릭 비즈니스를 적용하는 방법을 보여줄 수 있습니까? 나는 그들이 검색 요청을 처리하는 유사한 자바 스크립트를 실행하는 상상.

답변

2

알았어, 그건 재미있어 보였다. 생각이 튀어 나오지 않았지만 여기에 있습니다 :

"Return"키 클릭은 '\ n'문자와 같습니다. 즉, 모든 검색어는 줄 바꿈 문자로 끝나야합니다. 이렇게하면 리턴 키가 자동으로 클릭되고 reddit에서 결과를 검색하게됩니다!

그래서, 명령과 같습니다

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

그리고 당신은 셀레늄/가시가 검색어를 채우고으로 검색 결과에 찍은 것입니다.

0

는 다음 코드도 작동하기 때문에 '\ r에이', '\ n을'을 대체 할 수 있다는 것을 발견

그것은뿐만 아니라 유형의 기능을 작동
b = Browser()  
b.visit('http://reddit.com') 
b.fill('q', 'intp\r') 

:

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') 

post에도 언급되어 있습니다.

관련 문제