使用Python Selenium获取CLASS_NAME文本

ijxebb2r  于 2022-11-24  发布在  Python
关注(0)|答案(2)|浏览(249)

我尝试通过class_name查找一个whatsapp图标“attachment”,然后输入下面的代码

link = f'https://web.whatsapp.com/send?phone={numero}&text={texto}'
    navegador.get(link)
    sleep(10)
    navegador.find_element(By.CLASS_NAME, 'li._2qR8G:nth-child(4) > button:nth-child(1) > span:nth-child(1)').send_keys(Keys.ENTER)

我正在自动发送pdf whatsapp,我想输入附件,这样我就可以应用pdf
enter image description here

When trying to look for the class_name my code does not run looking for that icon or the class

return me
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .li._2qR8G:nth-child(4) > button:nth-child(1) > span:nth-child(1)       
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:182:5
NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:394:5
element.find/</<@chrome://remote/content/marionette/element.sys.mjs:280:16
huwehgph

huwehgph1#

我不知道这个定位器是否有效li._2qR8G:nth-child(4) > button:nth-child(1) > span:nth-child(1),但它看起来绝对不像一个类名。它看起来像一个CSS选择器。
因此,请尝试将其更改为:

navegador.find_element(By.CSS_SELECTOR, 'li._2qR8G:nth-child(4) > button:nth-child(1) > span:nth-child(1)').send_keys(Keys.ENTER)
qc6wkl3g

qc6wkl3g2#

对象的类在我这边看起来不一样

<div aria-disabled="false" role="button" tabindex="0" class="_26lC3" data-tab="10" title="Attach" aria-label="Attach">
<span data-testid="clip" data-icon="clip" class="">...

您可能需要考虑类名和css选择器可能会随时间而变化,并且还有其他方法。
对我来说,带有role=“button”的div看起来是更好的选择,因为它已经是一个按钮,当单击它时将触发选择要附加的内容的操作,因此您可以尝试使用 find by title 功能直接获得名为***Attach***的按钮。
您可以了解如何使用here方法,并了解它是否是满足您需要的更好选择。

相关问题