На Centos 7 VM у меня была установлена chrome версия 80, и я пытаюсь запустить тесты удаленного веб-драйвера selenium с параметрами ниже. Тесты создают сеанс, но не удалось найти элемент By.ID, в то время как By.XPATH работает нормально. Те же тесты отлично работают с geckodriver.
Команда: -
chrome = {"browserName": "chrome", "version": "", "platform": "ANY", "acceptSslCerts": True, "maxInstances": 1}
driver = webdriver.Remote(command_executor=url, desired_capabilities=chrome)
Ошибка: - Сообщение: нет такого элемента: невозможно найти элемент: {"method": "css selector", "selector" : "[id =" username "]"} (информация о сеансе: chrome = 80.0.3987.100)
У меня все работало на Chrome версии 73. Но обновление до последней версии или с версии 76 до 80 терпят неудачу по той же причине.
Версии: -
- Python - 2.7
- селен 3.141.0
- selenium-server-standalone -3.141.59.jar
- google-chrome -stable - 80
- chromedriver-80.0.3987.16
Отладка далее, глядя на файл webelement.py, By.ID конвертируется в By.CSS_SELECTOR.
def find_element(self, by=By.ID, value=None):
"""
Find an element given a By strategy and locator. Prefer the find_element_by_* methods when
possible.
:Usage:
element = element.find_element(By.ID, 'foo')
:rtype: WebElement
"""
if self._w3c:
if by == By.ID:
by = By.CSS_SELECTOR
value = '[id="%s"]' % value
elif by == By.TAG_NAME:
by = By.CSS_SELECTOR
elif by == By.CLASS_NAME:
by = By.CSS_SELECTOR
value = ".%s" % value
elif by == By.NAME:
by = By.CSS_SELECTOR
value = '[name="%s"]' % value
return self._execute(Command.FIND_CHILD_ELEMENT,
{"using": by, "value": value})['value']
Та же версия 76-80 Chromedriver работает на моей локальной Ma c. Буду признателен за любую оказанную помощь.