【问题标题】:Python Selenium Webdriver won't run, even when PATHed properly, and script written as instructedPython Selenium Webdriver 不会运行,即使 PATH 正确,并且脚本按照指示编写
【发布时间】:2023-03-19 21:39:02
【问题描述】:

我正在尝试学习 Python 的 Webdriver,使用对 Python 的基本了解以及对 Selenium 和 JAVA 的更广泛的了解。我正在遵循找到here 的指南。我的代码:

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.google.com")
assert "Google" in driver.title
sb = driver.find_element_by_name(lst-ib)
sb.clear()
sb.send_keys("Youtube")
sb.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

现在,在 PyCharm 中运行它会返回:

C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/mbrenn002c/PycharmProjects/PyDriver/Webdriver.py
Traceback (most recent call last):
  File "C:/Users/mbrenn002c/PycharmProjects/PyDriver/Webdriver.py", line 5, in <module>
    driver = webdriver.Firefox()
  File "C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 145, in __init__
    keep_alive=True)
  File "C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
  File "C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
self.error_handler.check_response(response)
  File "C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line


Process finished with exit code 1

我的 pip 包是:selenium;美丽的汤4。

我的 PATH 如下所示:

%USERPROFILE%\AppData\Local\Mirosoft\WindowsApps;C:\Users\myuser\AppData\Programs\Python;C:\Pythone34;C:\Users\myuser\Desktop\File transfer\Eclipse Items\geckodrver.exe

我的主要问题是;我究竟做错了什么?据我所知,我已经正确地遵循了一切,这段代码应该打开 geckodriver 并按照列出的方式工作。它甚至不会与 selenium 独立服务器一起运行以运行 webdriver。

我尝试在我的 Android 手机的 QPython 客户端上使用相同的 pip 和代码运行它,它在控制台中返回了一些回调,最后是这样的:

 Exception AttributeError: "'Service' object has no attribute 'log_file'" in <bound method Service.__del__ of <seleniumwebdriver.firefox.service.Service object at 0xf5e709f0>> ignored

值得注意的是,我的手机没有 Root,我真正做的只是保存这个脚本,然后 pip install Selenium 和 beautifulsoup4。

【问题讨论】:

  • 我没有从我的手机发布完整的返回日志,因为它的长度和可能与问题缺乏相关性。如果需要,我可以发布它,或者详细说明/扩展问题的任何部分。

标签: java python selenium selenium-webdriver webdriver


【解决方案1】:

selenium.common.exceptions.WebDriverException:消息:预期 浏览器二进制位置,但默认找不到二进制文件 位置,没有提供“moz:firefoxOptions.binary”功能,也没有 命令行上设置的二进制标志

Exception 明确指出 Firefox 安装了与 Selenium 不同的目录。尝试访问默认路径但找不到。您需要描述 Firefox 在您的代码中的确切安装位置。

使用下面的sn-p;

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/installed firefox binary')
driver = webdriver.Firefox(firefox_binary=binary)

driver.get("http://www.google.com")
assert "Google" in driver.title
sb = driver.find_element_by_name(lst-ib)
sb.clear()
sb.send_keys("Youtube")
sb.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

【讨论】:

  • 运行代码并补充了 geckodriver 的正确目录。它输出以下内容: C:\Users\mbrenn002c\AppData\Local\Programs\Python\Python35-32\python.exe C:/Users/mbrenn002c/PycharmProjects/PyDriver/Webdriver.py File "C:/Users/mbrenn002c/ PycharmProjects/PyDriver/Webdriver.py", line 6 binary = FirefoxBinary('C:\Users\mbrenn002c\Desktop\File transfer\C drive drops\eclipse') ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode位置 2-3 中的字节:截断 \UXXXXXXXX 转义进程以退出代码 1 结束
  • 'C:\Users\mbrenn002c\Desktop\File transfer\C drive drops\eclipse' 空格“C drive drops”是语法问题的原因。请更正为“C_drive_drops”
  • 我已经更正了代码中所有空格和 '_' 的组合,它仍然会抛出同样的错误。
  • 这显然是一个语法错误,如果您的原始问题已解决,请提出另一个问题
猜你喜欢
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2016-11-27
  • 2021-01-05
相关资源
最近更新 更多