如果选项卡在 Python 中不可见,硒无法正常工作



我创建了一个浏览器抓取脚本,该脚本使用python中的Selenium在WhatsApp网络上发送消息,但昨天注意到它发送了一半消息或不发送消息。调试了它,发现浏览器窗口必须处于活动状态才能发送消息,我的发送消息代码如下。

def send_message(msg):
whatsapp_msg = driver.find_element_by_class_name(send_messageClass)
for part in msg.split('n'):
whatsapp_msg.send_keys(part)
ActionChains(driver).key_down(Keys.SHIFT).key_down(Keys.ENTER).key_up(Keys.SHIFT).key_up(Keys.ENTER).perform()
time.sleep(1)    
ActionChains(driver).send_keys(Keys.RETURN).perform()
time.sleep(1)

find_element_by_class_name只是从DOM中检索元素。如果它是可见的,它不能确保。

为此,使用显式等待以及元素作为预期条件的可见性:

selenium.webdriver.support.expected_conditions.visibility_of(element)

这将等待元素可见,直到达到指定的超时。下面是超时为 60 秒的示例:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EXP_CON
...
wait = WebDriverWait(driver, 60)
whatsapp_msg = driver.find_element_by_class_name(send_messageClass)
visible_whatsapp_msg = wait.until(EXP_CON.visibility_of(whatsapp_msg))

相关内容

  • 没有找到相关文章

最新更新