저는 Python과 Selenium을 사용하여 Firefox 브라우저를 원격 제어합니다. 나는 mozilla developer site의 지시대로 마리오네트를 사용하도록 전환했다. 그건 모두 잘 작동합니다.Selenium과 함께 Mozilla Marionette 웹 드라이버를 사용할 때 웹 드라이버 예외를 어떻게 비활성화 할 수 있습니까?
요소를 선택하려는 페이지가 하나 있습니다. 나는 예외를 얻는다. 나는 그것이 운전수에게 bork를 초래하고있는 Javascript 경고 다라고 생각한다. 누구나 내가 덜 자바 스크립트 오류에 대한 까다로운 드라이버를 만들 수있는 방법을 알고 있습니까? 또한 파이썬 마리오 네트 클라이언트의 포괄적 인 문서가있는 곳을 아는 사람이 있습니까?
죄송합니다. 요소를 선택하려고 시도하는 클라이언트의 개인 사이트이므로 코드를 완전히 재현 할 수 없습니다.
from selenium import webdriver
# see https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.FIREFOX
# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True
caps["binary"] = "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Firefox(capabilities=caps)
webdriver.Firefox.get_capabilities()
browser.implicitly_wait(3)
browser.get("https://www.example.com/examplepage")
saved_exports_field = browser.find_element_by_id('exportlist')
saved_exports_field_select = Select(saved_exports_field)
이것이 잘못된 부분입니다. 첫 번째 질문에 대답하기 위해
---------------------------------------------------------------------------
WebDriverException Traceback (most recent call last)
<ipython-input-35-6e712759af43> in <module>()
1 saved_exports_field = browser.find_element_by_id('exportlist')
----> 2 saved_exports_field_select = Select(saved_exports_field)
3 #saved_exports_field_select.select_by_visible_text('test score export dan')
/Users/dan/anaconda/envs/lt/lib/python3.5/site-packages/selenium/webdriver/support/select.py in __init__(self, webelement)
39 webelement.tag_name)
40 self._el = webelement
---> 41 multi = self._el.get_attribute("multiple")
42 self.is_multiple = multi and multi != "false"
43
/Users/dan/anaconda/envs/lt/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py in get_attribute(self, name)
134 attributeValue = self.parent.execute_script(
135 "return (%s).apply(null, arguments);" % raw,
--> 136 self, name)
137 else:
138 resp = self._execute(Command.GET_ELEMENT_ATTRIBUTE, {'name': name})
/Users/dan/anaconda/envs/lt/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py in execute_script(self, script, *args)
463 return self.execute(Command.EXECUTE_SCRIPT, {
464 'script': script,
--> 465 'args': converted_args})['value']
466
467 def execute_async_script(self, script, *args):
/Users/dan/anaconda/envs/lt/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params)
234 response = self.command_executor.execute(driver_command, params)
235 if response:
--> 236 self.error_handler.check_response(response)
237 response['value'] = self._unwrap_value(
238 response.get('value', None))
/Users/dan/anaconda/envs/lt/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response)
190 elif exception_class == UnexpectedAlertPresentException and 'alert' in value:
191 raise exception_class(message, screen, stacktrace, value['alert'].get('text'))
--> 192 raise exception_class(message, screen, stacktrace)
193
194 def _value_or_default(self, obj, key, default):
WebDriverException: Message: SyntaxError: missing) in parenthetical
감사
고마워, 그 코드가 예외를 통해 실패했습니다. 나는 여전히 "select_by_visible_text"가 실제로 옵션을 선택하지 않는다는 것에 이상한 문제가있다. 필자가 텍스트를 변경하면 실패하지만 드라이버가 요소를 선택하도록 Firefox에서 알려주려고 시도하는 것으로 보이지 않습니다. 더 많은 디버깅을 시도해야 할 것입니다. – Dan
@ Dan, 기본 드롭 다운 목록과 관련된 문제가 발생했습니다.
Florent에게 감사 드려도 이의를 제기 할 수 있습니다. "#. 잠시 Chrome으로 전환했습니다. – Dan