我是Python的新手。
我的脚本的目的是使用Selenium Webdriver解析网页。有两个子任务。我所做的第一个任务没有任何错误。但是所有脚本都没有任何功能。
现在,我正在尝试以一些复杂的方式解决第二个任务。我想使用功能。
问题是:
我可以在功能参数中传递活动的Selenium Webdriver吗?
第二个问题是:
如果答案为是-第二个功能是否还可以将活动的Webdriver传递给另一个功能?
因此,我考虑了在不关闭会话的情况下激活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'
是的,您可以将aWebDriver
作为参数传递给任何function
或method
。您第二个问题的答案也是。WebDriver
如果您要这样做,那么可以在整个应用程序中共享一个。如果这不可能,那么非常流行的设计模式(Page Object
)将是不可能的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句