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

2024-09-29 19:35:20 发布

您现在位置:Python中文网/ 问答频道 /正文

HTML:

enter image description here

我的目标:

我现在要做的就是找到这个textarea并使用它发送.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']")

新硒和编码我一般。提前谢谢。你知道吗


Tags: divbrowserid目标by电子邮件htmlelement
2条回答

这个怎么样:

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

当我尝试登录Gmail并使用Selenium远程发送电子邮件时,我遇到了这个问题。 我注意到,每次我使用Selenium打开Gmail时,收件人字段、主题字段、email body字段和send元素的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()

这个帖子帮了我:login to Gmail using Selenium in Python

相关问题 更多 >

    热门问题