Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python selenium:元素不可交互_Python_Selenium_Warnings - Fatal编程技术网

Python selenium:元素不可交互

Python selenium:元素不可交互,python,selenium,warnings,Python,Selenium,Warnings,我尝试用python编写web自动化代码,但总是收到错误警告: selenium.common.exceptions.ElementNotInteractiableException:消息:元素不可交互 代码如下: def commentAndLike(): random.seed() likeOrNext = random.randint(0, 3) if likeOrNext == 0: if check_exists_by_xpath("/html/body/div[3]/div

我尝试用python编写web自动化代码,但总是收到错误警告:

selenium.common.exceptions.ElementNotInteractiableException:消息:元素不可交互

代码如下:

def commentAndLike():
random.seed()
likeOrNext = random.randint(0, 3)

if likeOrNext == 0:
    if check_exists_by_xpath("/html/body/div[3]/div[2]/div/article/div[2]/section[1]/span[1]/button/span"):
        likeButton = browser.find_element_by_xpath("/html/body/div[3]/div[2]/div/article/div[2]/section[1]/span[1]/button/span")
        likeButton.click()

        time.sleep(randomNumber(6, 10))

        if check_exists_by_xpath("/html/body/div[3]/div[2]/div/article/div[2]/section[1]/span[2]/button/span"):
            random.seed()
            randomComment = random.randint(0, 3)

            textArea = browser.find_element_by_xpath("/html/body/div[3]/div[2]/div/article/div[2]/section[3]/div[1]/form/textarea")

            if randomComment == 0:
                textArea.send_keys(comments[0])
            elif randomComment == 1:
                textArea.send_keys(comments[1])
            elif randomComment == 2:
                textArea.send_keys(comments[2])
            elif randomComment == 3:
                textArea.send_keys(comments[3])

            time.sleep(randomNumber(15,30))

            postButton = browser.find_element_by_xpath("/html/body/div[3]/div[2]/div/article/div[2]/section[3]/div/form/button")
            postButton.click()

            time.sleep(randomNumber(20,25))

            nextButton2 = browser.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/a[2]")
            nextButton2.click()

            time.sleep(randomNumber(15,20))

        else:
            nextButton4 = browser.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/a[2]")
            nextButton4.click()

            time.sleep(randomNumber(20, 25))

    else:
        nextButton1 = browser.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/a[2]")
        nextButton1.click()

        time.sleep(randomNumber(20, 25))

else:
    nextButton = browser.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/a[2]")
    nextButton.click()

    time.sleep(randomNumber(20,25))
尝试
textArea
元素发送密钥时抛出错误


我知道我仍然需要改进代码并缩短下一个按钮,但我想首先解决问题。谢谢你的帮助

根据问题描述修改,向
textArea
发送密钥会引发错误

您可以尝试使用Javascript设置textarea的值:

browser.execute_script("arguments[0].value = 'myValue';", textArea)
如果这不起作用,您可以尝试单击文本区域以首先激活它:

browser.execute_script("arguments[0].click();", textArea)

browser.execute_script("arguments[0].value = 'myValue';", textArea);

在您的例子中,您可以将
'myValue'
替换为
'+注释[0]+'

引发此类异常,以指示尽管DOM上存在元素,但它不处于可与之交互的状态。您可以尝试实现某种等待机制,最好是像这样的显式机制:

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

textArea = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, "/html/body/div[3]/div[2]/div/article/div[2]/section[3]/div[1]/form/textarea"))

这不是问题所在,问题在于Webdriver无法将_键发送到TextArea。如果您在问题描述中包含引发错误的代码行,这会有所帮助。发布一个和你一样长的程序,并说有错误,如果我们不知道它在哪一行,这并不能告诉我们多少。您可以使用
浏览器设置文本区域值。执行_脚本(“参数[0]。值='myValue';”,textArea)
以及myValue是什么?您希望将文本区域设置为什么值。在您的情况下,它将是
注释[0]
——这取决于您的循环索引。我已经用一个更具体的解决方案更新了我的答案。我为instagram这样做,但当我只是将文本粘贴到评论栏时,我无法发布它,我知道如何解决它吗