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

时间:2020-01-06 04:55:09

标签: python selenium selenium-chromedriver

我创建了一个浏览器抓取脚本,该脚本使用python中的硒在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)

1 个答案:

答案 0 :(得分:0)

find_element_by_class_name只是从DOM中检索元素。它不能保证它是否可见。

为此,将an explicit wait与元素的可见性结合使用作为预期条件:

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))
相关问题