在id不断变化的情况下,如何在Python中使用selenium定位元素并发送密钥?

在id不断变化的情况下,如何在Python中使用selenium定位元素并发送密钥?,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,HTML: 我的目标是: 我现在要做的是找到这个文本区域并使用send.keys()。(用于发送电子邮件(gmail)自动化) 我的问题是: 找不到此文本区域 试图解决这个问题: 我尝试使用id,但这确实有效,因为每次重新加载时id值似乎都在不断变化 browser.find_element_by_id() 尝试使用类名,但这也不起作用,不知道为什么 browser.find_element_by_class_name("Ak aXjCH") 试图造成时间延迟,对结果没有影响 time

HTML:

我的目标是:

我现在要做的是找到这个文本区域并使用send.keys()。(用于发送电子邮件(gmail)自动化)

我的问题是:

找不到此文本区域

试图解决这个问题:

我尝试使用id,但这确实有效,因为每次重新加载时id值似乎都在不断变化

browser.find_element_by_id() 

尝试使用类名,但这也不起作用,不知道为什么

browser.find_element_by_class_name("Ak aXjCH")
试图造成时间延迟,对结果没有影响

time.sleep(10)
尝试使用xpath查找元素,但我认为我编写的代码不正确

browser.find_element_by_xpath("//div[@class='Ar As']//div[@class='At']//textarea[@class='Ak aXjCH']")
selenium和编码I概述的新内容。提前谢谢

这个怎么样:

parentElement = browser.find_element_by_class_name("At")
elementList = parentElement.find_elements_by_tag_name("textarea")

当我尝试登录Gmail并使用Selenium远程发送电子邮件时,我遇到了这个问题。 我注意到,每次我使用Selenium打开Gmail时,收件人字段、主题字段、电子邮件正文字段和发送元素的id都发生了变化(每个字段有2个不同的id)。我通过检查每个id解决了这个问题,如下所示:

# click compose 
# when page is loaded, elements appear at different time intervals (AJAX)... 
# some elements may take some time to appear in the DOM
composeElem = WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.ID, ":3w")))
composeElem.click()

# add recipient
try: 
    recipientElem = WebDriverWait(browser, 5).until(EC.element_to_be_clickable((By.ID, ":96")))
except Exception as exc:
    recipientElem = browser.find_element_by_id(':9b')

recipientElem.send_keys(emailRecipient)

# add subject
try: 
    subjectElem = browser.find_element_by_id(':8o')
except Exception as exc:
    subjectElem = browser.find_element_by_id(':8t')

subjectElem.send_keys(emailSubject)

# add message
try: 
    messageElem = browser.find_element_by_id(':9t')
except Exception as exc:
    messageElem = browser.find_element_by_id(':9y')

messageElem.send_keys(emailMessage)

# click send
try:
    sendEmail = browser.find_element_by_id(':8e').click()
except Exception as exc:
    sendEmail = browser.find_element_by_id(':8j').click()

这篇文章帮助了我:

错误:selenium.common.exceptions.elementnotinteractitableexception:Message:element notinteractitable我很高兴能够帮助你。这并不经常发生。是的,我12岁。我不是开玩笑。:)你能解释一下你找到的解决方案吗?