selenium - whatsapp bot中的硒关闭警报
问题描述
有一个机器人从文本文件向数字发送消息,但是在切换到另一个人之后,有一个需要确认的警报。
但是,当您打开下一个聊天时会发生这种情况,并且警报处理会转到下一行,但代码不会进一步移动,因为它正在等待页面打开。而且我不明白如何同时处理这两个案例
代码:
def acceptAlert(driver):
try:
wait3 = WebDriverWait(driver, 10)
Alert = wait3.until(expected_conditions.alert_is_present())
if Alert is not None:
driver.switchTo().alert().dismiss()
except:
driver.get('https://web.whatsapp.com/send?phone=7' +
str(e[1:]) + '&test=sdfsdf')
time.sleep(5)
driver = webdriver.Chrome('C:\\Users\Marsel\AppData\Local\Programs\Python\Python38-32\chromedriver.exe')
test = open('base.txt', 'r')
lines = test.readlines()
i = 0
driver.get('https://web.whatsapp.com/send?phone=' + str(lines[i]) + '&test=sdfsdf')
time.sleep(15)
s = lines[i]
s = re.sub(r"[()'+']", "", s)
e = s.replace('-', '')
driver.get('https://web.whatsapp.com/send?phone=7' +
str(e[1:]) + '&test=sdfsdf')
time.sleep(5)
while i < len(lines):
driver.find_element_by_xpath('/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div[2]/div/div[2]').send_keys('привет')
time.sleep(1)
driver.find_element_by_xpath(
'/html/body/div[1]/div/div/div[4]/div/footer/div[1]/div[2]/div/div[2]').send_keys(Keys.RETURN)
s = lines[i]
s = re.sub(r"[()'+']", "", s)
i += 1
acceptAlert(driver)
解决方案
您应该将它们拆分为单独的函数并添加 try catch 块。
def acceptAlert(driver):
try:
wait3 = WebDriverWait(driver, 10)
Alert = wait3.until(expected_conditions.alert_is_present())
if Alert is not None:
driver.switchTo().alert().accept()
except:
print('No alert found')
然后在你的代码循环中调用这个方法。所以当没有alert的时候,它会等待10秒,即使没有alert仍然继续执行。
推荐阅读
- jquery - 过滤后Jquery插件数据表消失
- sql-server - 在 TSQL 中写 SELECT 'a' colName 是有效的,PL/SQL 中的替代是什么?
- html - 如何快速将引导按钮转换为 png 图像文件?
- postgresql - EF Core 2.0 更新 - 跟踪问题
- c++ - 在 Visual c++ 中使用 WebRTC 库
- r - 遵循模式时按名称获取列索引
- python - 如何使用 python 获取 FTP 的当前工作目录
- javascript - this.props.history.router 不适用于 websocket 的第一个触发器
- dart - 如何在 Fluro 或 Flutter 路由导航器中传递对象或对象列表?
- visual-studio-code - 我正在使用 PyGame 在 python3.6.5 中创建蛇游戏。这是初始代码,它在 PyCharm 上运行良好。但是我在 VSCode 中遇到了问题