Python Find_Element_by_xxx внезапно перестал работать - PullRequest
0 голосов
/ 07 июня 2019

Обновление: понял это. Если я запускаю сценарий от имени администратора на экземпляре Server 2012, он работает. Со вчерашнего дня до сегодняшнего дня на сервере должно было что-то измениться, что изменило некоторые разрешения.

При использовании селена я не могу включить нужный мне элемент в Windows Server 2012. Я просто получаю «Нет». Если я пытаюсь получить доступ к элементу, который не существует, я получаю соответствующее NoSuchElementException, так что, похоже, он его находит.

До вчерашнего дня все работало нормально и почему-то остановилось сегодня. Код также отлично работает, когда я запускаю его в Windows 10.

Я использую тот же iedriver с общего диска, так что это не так.

Вот HTML-код. Ничего не меняется до или после того, как я позвоню.

<div id="root">some text</div>
print(browser.find_element_by_id("root"))

None
print(browser.find_element_by_id("root").text)

Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    browser.find_element_by_id("root").print
AttributeError: 'NoneType' object has no attribute 'text'

Если я сделаю тот же вызов для несуществующего элемента, то получу ожидаемое не найденное исключение.

print(browser.find_element_by_id("none"))

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print(browser.find_element_by_id("none"))
  File "C:\Users\A1B4CZZ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 360, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "C:\Users\A1B4CZZ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Users\A1B4CZZ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\A1B4CZZ\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with css selector == [id="none"]

Еще одно обновление, чтобы добавить к этому. Если я выберу все элементы на странице, я получу их возвращенные, но они будут ВСЕМИ, когда я их распечатаю:

>>> elems = browser.find_elements_by_xpath('//*')
>>> print(len(elems))
8559

>>> for elem in elems:
    print(elem)


None
None
None
None
None
None
None
None
None
None
None
None
.
.
.

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Обновление: понял это.Если я запускаю сценарий от имени администратора на экземпляре Server 2012, он работает.Должно быть, что-то изменилось на сервере между вчера и сегодня, что изменило некоторые разрешения.

0 голосов
/ 07 июня 2019

Попробуйте с textContent.

print(browser.find_element_by_id("root").get_attribute('textContent'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...