python - Selenium - 使用 chromedriver 通过导航栏运行 javascript

标签 python selenium web-scraping selenium-chromedriver

我一直在尝试使用 Selenium 将 javascript 插入 Chrome 导航栏,但没有成功。

goto = "javascript:gotoText(-884)"<br />
browser.get(goto)

手动完成时(通过单击并在导航栏中写入“javascript:gotoText(-884)”),它就像一个魅力。然而, Selenium 给我带来了这个错误。 有什么解决方法吗?网页本身没有提供任何可直接指向此链接的可点击内容。

谢谢您的建议!

---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)
<ipython-input-297-41c52a12ba91> in <module>()
----> 1 browser.get(asd)

/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in get(self, url)
    331         Loads a web page in the current browser session.
    332         """
--> 333         self.execute(Command.GET, {'url': url})
    334 
    335     @property

/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
    319         response = self.command_executor.execute(driver_command, params)
    320         if response:
--> 321             self.error_handler.check_response(response)
    322             response['value'] = self._unwrap_value(
    323                 response.get('value', None))

/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243 
    244     def _value_or_default(self, obj, key, default):

WebDriverException: Message: unknown error: unsupported protocol
  (Session info: chrome=71.0.3578.98)
  (Driver info: chromedriver=2.45.615355 (d5698f682d8b2742017df6c81e0bd8e6a3063189),platform=Mac OS X 10.13.6 x86_64)

最佳答案

错误:

WebDriverException: Message: unknown error: unsupported protocol

表明您错误地使用了 browser.get() 函数。

正如您在 documentation-simple-usage 中看到的那样(Python)。

您想要做的是 inject JavaScript ...(在 Python 中,您使用:execute_script()

以下是 execute_script() 的示例:

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r'C:\path\To\chromedriver.exe')
driver.get("https://stackoverflow.com/questions/54132715/select-element-by-text-in-selenium/54132762#54132762")
driver.execute_script("document.getElementsByClassName('comment-user')[0].click()")

希望这对您有帮助!

关于python - Selenium - 使用 chromedriver 通过导航栏运行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54539195/

相关文章:

python - 获取 XPATH 和 CSS 选择器以使用 Selenium 进行抓取的最佳方法

java - 如何使用Jsoup从网站获取值(value)?

python - 从 "_ElementUnicodeResult object of lxml.etree module"创建列表对象

python - Python lambda 捕获语义如何用于函数指针?

python - 基于列值的 Pandas 重新索引任务

c# - Selenium.NoSuchElementException 与动态表

python - 如何初始化 Field() 以包含嵌套的 python 字典?

python - 不显示自定义 libindicator 图标

php - 将 POST 后的表单值保留为 python 文件的参数

android - org.openqa.selenium.WebDriverException : No command or response codec has been defined. 无法继续