selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素。有人能帮我吗?

时间:2020-10-11 13:28:13

标签: python selenium exception xpath webdriver

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中进行了查找,它告诉我让驱动程序进入睡眠状态,但它无法正常工作。

1 个答案:

答案 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中元素标题的一部分,不正确的标记,匹配多个元素的定位符(其中之一当前不可见和可点击的。