我正在开发一个python应用程序,以通过whatsapp发送一些图像,但是当我尝试附加图像时,单词已损坏,有人知道会发生什么吗?
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
AbreAnexo = driver.find_element_by_css_selector('span[data-icon="clip"]')
AbreAnexo.click()
AbreImagem = driver.find_element_by_css_selector('button[class="Ijb1Q"]')
AbreImagem.click()
pyautogui.typewrite("C:\\Users\\f_teicar\\Documents\\Lanchonete\\001-Cardapio.png",interval=0.02)
time.sleep(5)
pyautogui.press('enter')
time.sleep(5)
pyautogui.press('enter')
预计将写入 C:\ Users \ f_teicar \ Documents \ Lanchonete \ 001-Cardapio.png 但输出的是 car \ Documents \ Lanchonete \ 001-Cardapio.png
答案 0 :(得分:1)
尤其是在外部网站上,页面加载需要一段时间。这意味着下一步(或其中的一部分)可能会被忽略,因为页面尚未准备好接收来自Selenium客户端的进一步操作。
time.sleep(n),其中n是等待的秒数,是一种等待页面加载的快速方法,但是如果它花费的时间比您指定的时间长,它将失败,并且如果它加载得快得多,那么会浪费时间。所以我使用一个函数来等待这样的页面。
@contextmanager
from selenium import webdriver
from selenium.webdriver.support.expected_conditions import staleness_of
from contextlib import contextmanager
def wait_for_page_load(timeout=MAX_WAIT):
""" Wait for a new page that isn't the old page
"""
old_page = driver.find_element_by_tag_name('html')
yield
webdriver.support.ui.WebDriverWait(driver, timeout).until(staleness_of(old_page))
要调用该函数,请使用类似的
with self.wait_for_page_load():
AbreImagem.click()
其中第二行是导致加载新页面的任何内容。请注意,此过程取决于旧页面中标签的存在,这通常非常可靠。