Ich schrieb ein Skript in Python3.4 zu navigieren und auf einer Webseite mit Selenium anmelden. Das Skript funktioniert einwandfrei. Selen Skript:Erstellen Sie ein Python-Selenium-Skript in eine Exe mit py2exe
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://128.114.70.78/periscope")
login = driver.find_element_by_id('keys')
login.send_keys("username")
login.send_keys(Keys.TAB)
login.send_keys("pass")
login.send_keys(Keys.RETURN)
ich es in eine exe gebaut py2exe verwenden, aber die ausführbare Datei nicht die Selen WebDriver jedes Mal zu importieren. Ich bekomme einen AttributeError: 'NoneType' -Objekt hat kein Attribut 'startswith'. Hier ist der Fehler in der Protokolldatei:
Traceback (most recent call last):
File "periscopeLogin.py", line 1, in <module>
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in
_load_backward_compatible
File "C:\Python34\lib\site-packages\selenium\webdriver\__init__.py", line
18, in <module>
from .firefox.webdriver import WebDriver as Firefox # noqa
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in
_load_backward_compatible
File "C:\Python34\lib\site-
packages\selenium\webdriver\firefox\webdriver.py", line 34, in <module>
from selenium.webdriver.remote.webdriver import WebDriver as
RemoteWebDriver
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in
_load_backward_compatible
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py",
line 25, in <module>
from .webelement import WebElement
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
File "<frozen importlib._bootstrap>", line 1161, in
_load_backward_compatible
File "C:\Python34\lib\site-
packages\selenium\webdriver\remote\webelement.py", line 40, in <module>
getAttribute_js = pkgutil.get_data(__package__,
'getAttribute.js').decode('utf8')
File "C:\Python34\lib\pkgutil.py", line 611, in get_data
spec = importlib.util.find_spec(package)
File "C:\Python34\lib\importlib\util.py", line 81, in find_spec
fullname = resolve_name(name, package) if name.startswith('.') else name
AttributeError: 'NoneType' object has no attribute 'startswith'
ich einen Thread von 2014 gefunden, die die Position von Selen WebDriver in der setup.py-Datei angeben sagt. Link: Make exe file from python selenium tests Allerdings erhalte ich immer noch den gleichen Fehler, wenn ich die Lösung des Threads versuche. Hier ist meine setup.py:
from distutils.core import setup
import py2exe
data_files = [('selenium\webdriver\Firefox', ['C:\Python34\Lib\site-
packages\selenium\webdriver\Firefox\webdriver.xpi'])]
# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
setup(
windows = [{'script': "periscopeLogin.py"}], # the main py file
data_files = data_files,
options = {
'py2exe':
{
'skip_archive': True,
'optimize': 2,
}
}
)
Der einzige Unterschied ist, dass ich Python34 bin mit, und die 3-jährige Thread verwendet Python27. Ich habe das Gefühl, dass sich die Dinge in dieser Zeitspanne geändert haben könnten. Hat jemand irgendwelche Ideen oder Hinweise für mich zu folgen? Soll ich es einfach mit 27 probieren?
Vielen Dank.
Hallo, Hast du irgendeine Lösung dafür? Wenn ja, dann aktualisieren Sie bitte die Post damit. – pratibha
Vielen Dank für die Erinnerung! Ich werde es jetzt machen. –