我正试图在Windows7上用Python运行以下代码。
我收到以下错误。
Traceback(最后一次调用(:文件";C: \Users\Yogesh Wadhwa\Desktop\whatsapp 2.py";,第41行,ingroup_title=等待,直到(EC.presence_of_element_located((文件";C: \Users\Yogesh Wadhwa\AppData\Local\Programs\Python38-32\lib\site packages\selenium\webdriver\support\wait.py",第80行,直到引发超时异常(消息、屏幕、堆栈(selenium.com.mon.exceptions.TimeoutException:消息:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
import sys
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import datetime
import time
import openpyxl as excel
driver = webdriver.Chrome("C:\Users\Yogesh Wadhwa\AppData\Local\Programs\Python\Python38-32\chromedriver.exe")
def readContacts(fileName):
lst = []
file = excel.load_workbook(fileName)
sheet = file.active
firstCol = sheet['A']
for cell in range(len(firstCol)):
contact = (firstCol[cell].value).encode('utf-8')
lst.append(contact)
return lst
targets = readContacts("C:\Users\Yogesh Wadhwa\AppData\Local\Programs\Python\Python38-32\HNI.xlsx")
#print(targets)
driver.get("https://web.whatsapp.com/")
wait = WebDriverWait(driver, 600)
wait5 = WebDriverWait(driver, 5)
msg = input('Enter the message : ')
#targets =['Mona 1','School']
for target in targets:
x_arg = '//span[contains(@title,' +'"' +target.decode('utf-8') + '"' +')]' #.decode('utf-8')
group_title = wait.until(EC.presence_of_element_located((
By.XPATH, x_arg)))
group_title.click()
message = driver.find_element_by_class_name('_2EoyP')
message.send_keys(msg)
sendbutton = driver.find_element_by_class_name('_2FVVk')
sendbutton.click()
time.sleep(5)
driver.close()
当您使用显式等待时,它会将问题隐藏在超时错误中。你无法判断它是没有找到你的对象,还是花了很长时间才出现。
对你的代码很少有想法:
- 您的XPath看起来不对。你至少少了一个方括号。试试这个,而不是代码中的那个:
'//span[contains(@title,"' +target + '" )]'
-
我建议您在运行时验证
x_arg
的值。把它打印出来,这样你就可以确保字符串如你所期望的那样。 -
只有取消对
targets
数组的注释,代码才能正常工作。 -
您正在
for
循环中构建XPath,而不添加任何值。动态构建的字符串不会填充任何内容。