2

저는 파이썬을 처음 사용합니다.Selenium Webdriver를 매개 변수에 전달. 파이썬에서 가능합니까?

내 스크립트의 목적은 Selenium Webdriver로 웹 페이지를 구문 분석하는 것입니다. 두 가지 하위 작업이 있습니다. 오류없이 작성한 첫 번째 작업. 그러나 모든 스크립트는 기능을하지 못했습니다.

이제 두 번째 작업을 약간 복잡한 방법으로 해결하려고합니다. 나는 함수를 사용하고 싶다.

질문 :

내가 함수 매개 변수에 적극적인 셀레늄 Webdriver을 통과 할 수 있을까요?

번째 질문은

대답이 YES이면 - 두 번째 함수는 다른 함수 활성 Webdriver 전달할 수 있는가?

그래서 저는 웹 드라이브를 활성화하고 세션을 닫지 않고 함수에 전달하는 방법에 대해 생각합니다.

내 코드는 다음과 같습니다

for key, value in enumerate(headers): 
    webdriver.DesiredCapabilities.PHANTOMJS[ 
     'phantomjs.page.customHeaders.{}'.format(key)] = value 

w = webdriver.PhantomJS() 

ps = q_yn('Perform new links parsing?', default='no') 

if ps: 
    csv_l = get_clist(w) 

<...> 

def get_clist(w): 
    w.get(url) 
    wait_pageload(w, 0) 
    src = w.page_source 
    BeautifulSoup(src, "lxml") 
    ... (etc) 

<..> 

def wait_pageload(w, pt): 
    if pt == 0: 
     element = WebDriverWait(w, 10).until(
      EC.presence_of_element_located((By.CLASS_NAME, "serg_search_result"))) 
    elif pt == 1: 
     element = WebDriverWait(w, 10).until(
      EC.presence_of_element_located((By.ID, "ya_share"))) 
    else: 
     raise ValueError("Page type: %s is unknown" % pt) 

내가 구축하고 내가 오류가 표시이 스크립트를 실행하려고 :

File "fts-crawl2.py", line 108, in wait_pageload 
EC.presence_of_element_located((By.CLASS_NAME, "serg_s"))) 
    File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/support/ 
    wait.py", line 71, in until 
    value = method(self._driver) 

selenium.common.exceptions.WebDriverException: Message: Error - Unable 
to load Atom 'find_element' from file ':/ghostdriver/./third_party/webdriver- 
atoms/find_element.js' 

답변

3

예 당신이 어떤 function 또는 method에 매개 변수로 WebDriver를 전달할 수 있습니다 . 당신의 두 번째 질문에 대한 답은 역시 그렇습니다. 하나의 WebDriver을 원한다면 전체 애플리케이션에서 공유 할 수 있습니다. 이것이 가능하지 않은 경우 매우 인기있는 디자인 패턴 (Page Object)을 사용할 수 없습니다.

+0

감사합니다. @RemcoW. 그래서 모두 작동해야합니다. 예외는 [이 StackOverflow 질문에] 우분투 16.04 오류에서 PhantomJS에서입니다 (http://stackoverflow.com/questions/36770303/phantomjs-with-selenium-unable-to-load-atom-find-element) –

관련 문제