#python-3.x
#python-3.x
Вопрос:
Я использую selenium
In [1]: import selenium
In [2]: from selenium import webdriver
In [3]: chrome = webdriver.Chrome()
Откройте официальный сайт python
In [5]: chrome.get("http://www.python.org")
In [6]: chrome.title
Out[6]: 'Welcome to Python.org'
Методы извлечения
In [11]: methods = [ m for m in dir(chrome) if not m.endswith("_")]
In [36]: len(methods)
Out[36]: 90
Тест getattr
In [41]: getattr(chrome, methods[0])
Out[41]: <selenium.webdriver.remote.file_detector.LocalFileDetector at 0x7f436ebf7630>
In [42]: getattr(chrome, methods[1])
Out[42]: False
Это работает нормально, но когда доходит до его повторения
In [43]: for m in methods:
...: getattr(chrome, m)
...:
---------------------------------------------------------------------------
WebDriverException Traceback (most recent call last)
<ipython-input-43-e728e0081ce6> in <module>()
1 for m in methods:
----> 2 getattr(chrome, m)
3
/home/wei/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py in orientation(self)
1213 orientation = driver.orientation
1214 """
-> 1215 return self.execute(Command.GET_SCREEN_ORIENTATION)['value']
1216
1217 @orientation.setter
/home/wei/.local/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))
/home/wei/.local/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: unhandled inspector error: {"code":-32601,"message":"'Emulation.getScreenOrientation' wasn't found"}
(Session info: chrome=73.0.3683.75)
(Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Linux 4.18.0-16-generic x86_64)
Я проверил, что в моем использовании цикла for или getattr нет ошибок.
В чем проблема с моими кодами?
Комментарии:
1. Может быть, в вашем коде нет проблемы, и вы просто не можете получить ориентацию? Нет гарантии, что только потому, что у объекта есть атрибут, обращение к которому не вызовет ошибки; почему вы пытаетесь получить доступ ко всем из них?