提问者:小点点

属性问题错误:“WebDriver”对象没有属性“manage”


我的代码:

commentr = driver.find_element_by_id("simplebox-placeholder")
commentr.click()

driver.execute_script("document.getElementById('simplebox- 
placeholder').value = 'your comment text here';")
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
commentr.send_keys("HELO")

我的错误:

回溯(最近一次调用last):文件“C:\Users\weqwwg\Desktop\python\Game.py”,第77行,在driver.manage().timeouts()中。隐式等待(10,时间单位:秒);AttributeError:“WebDriver”对象没有属性“manage”

我正在尝试向youtube上的评论框发送密钥。我删除了一些代码,我目前正在运行此代码。

commentr = driver.find_element_by_id("simplebox-placeholder")
commentr.click()
driver.implicitly_wait(10)
commentr.send_keys("HELO")

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Users\Brandsdo\Desktop\python\Game.py", line 76, in <module>
    commentr.send_keys("HELO")
  File "C:\Users\Braasdasndo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 479, in send_keys
    'value': keys_to_typing(value)})
  File "C:\Users\Brsadasdando\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\Braasdasndo\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\Braasdando\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.ElementNotInteractableException: Message: element not interactable
  (Session info: chrome=73.0.3683.103)
  (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 10.0.17763 x86_64)

更新部分代码

driver.find_element_by_id("simplebox-placeholder").click()

commentr = WebDriverWait(driver,10).until(EC.element_to_be_clickable( (By.ID, 'contenteditable-textarea') ))

commentr.click().send_keys("HELO")
driver.find_element_by_id("submit-button").click()

这是错误

回溯(最近调用最后):文件“C:\用户\桌面\python\Game.py”,第 74 行,在注释器.click().send_keys(“HELO”) 属性错误:“无类型”对象没有属性“send_keys”


共1个答案

匿名用户

要解决您眼前的问题,请使用

driver.implicitly_wait(10)

手册是有的

然而,你可能完全走错了方向。相反,请尝试使用< code>WebDriverWait模块。

from selenium.webdriver.support.ui import WebDriverWait

例如:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#...

footer = WebDriverWait(driver, 10).until(EC.visibility_of_element_located(
   (By.CSS_SELECTOR, ".b-footer__divider"))
)

我正在尝试向youtube上的评论框发送密钥。我删除了一些代码,我目前正在运行此代码。

正如我所怀疑的,您根本不需要< code>implicitly_wait函数。

>

  • 我已经查看了YouTube页面。您的第一步是正确的-您正在定位“添加公共评论…”框并单击它。

    我跳过了隐式_wait调用-它不会影响那里的任何内容。

    在下一步,您将尝试将击键发送到您找到并单击的同一个框中。这是错误的。虽然它们看起来完全相同,但您单击的是idsimplebox-占位符的元素,但一旦单击该元素就会变得不可见,并且具有idcontentedable-text Area的相同外观元素已准备好获取您的输入。

    用一种简单的方法,您应该找到这个元素并向其中发送击键:

    commentr = driver.find_element_by_id("contenteditable-textarea")
    commentr.click()
    commentr.send_keys("HELO")
    

    但是,当单击<code>simplebox占位符

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    commentr = WebDriverWait(driver,10).until(EC.element_to_be_clickable( (By.ID, 'contenteditable-textarea') ))
    commentr.click()
    commentr.send_keys("HELO")
    
    • 最后,找到“评论”按钮并单击它提交评论。这里您可以使用简化方法,因为“评论”按钮已经准备好:
    driver.find_element_by_id("submit-button").click()
    

    总体而言,您的代码可能如下所示:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver.find_element_by_id("simplebox-placeholder").click()
    
    commentr = WebDriverWait(driver,10).until(EC.element_to_be_clickable( (By.ID, 'contenteditable-textarea') ))
    
    commentr.click()
    commentr.send_keys("HELO")
    driver.find_element_by_id("submit-button").click()