Python Find_Element_by_xxx突然停止工作

时间:2019-06-07 16:01:29

标签: python selenium

更新:解决了这个问题。如果我在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 :(得分:0)

尝试使用textContent

print(browser.find_element_by_id("root").get_attribute('textContent'))

答案 1 :(得分:0)

更新:解决了这个问题。如果我在Server 2012实例上以管理员身份运行脚本,则它将正常运行。从昨天到今天之间,服务器上的某些内容必须已更改,从而更改了一些权限。