from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome(executable_path='./drivers/chromedriver')
driver.get('https://web.whatsapp.com/')
name = input('Enter the name of user or group: ')
msg = input('Enter your message: ')
count = int(input('How many message you want to send: '))
input('Enter anything after scanning QR code')
user = driver.find_element_by_xpath('//span[@title = "{}"]'.format(name))
time.sleep(10)
user.click()
当我运行它时,它会不断给我以下消息:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素。
有人可以帮助我吗?我在Stackoverflow中进行了查找,它告诉我让驱动程序进入睡眠状态,但它无法正常工作。
答案 0 :(得分:0)
当他们说“让驾驶员入睡”时,他们可能打算在尝试找到元素之前先等待 ,但这通常是不好的做法,即在测试过程中硬编码任何静态时间来空闲地等待。常见的解决方案是使用expected conditions,它只会暂停所需的时间,并会超时:
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
user = wait.until(EC.element_to_be_clickable(By.XPATH, '//span[@title = "{}"]'.format(name))))
user.click()
话虽如此,请密切注意您的代码生成的xpath表达式的正确性,并且要注意诸如未修剪的空格是DOM中元素标题的一部分,不正确的标记,匹配多个元素的定位符(其中之一当前不可见和可点击的。