python - 如何获得单击事件的响应以使用 Python 处理 Selenium 上的异常?
问题描述
我正在使用 Selenium 自动对 Instagram 上的帖子进行一些评论操作。流程如下:脚本等待textarea可以点击,然后点击它,写评论,等待“发布”按钮可以点击,然后点击它。然而,即使我限制了很少的评论(20 条评论/小时)并在两者之间留出足够的时间,但时不时地所有内容都可以点击,但评论不会通过,并且底部会显示一个小横幅点击“发布”后页面显示“无法发表评论”,然后文本区域不再可点击。
这是我的一段代码:
...
try:
comment_post = WebDriverWait(self.webdriver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']")))
if comment_post.text == "Post":
comment_post.click()
sleep(random.randint(2,5))
return
...
问题是,即使没有发布评论,try
声明也会通过,因为该.click()
操作是可用的。如何获得点击的响应(“无法发表评论”),以便我可以引发异常并让应用程序等待它再次可用或刷新页面或其他什么?
解决方案
单击后,您将不得不等待并搜索横幅的存在。如果您找到横幅,则引发异常。
像这样的东西:
comment_post.click()
try:
nocommentbanner = WebDriverWait(self.webdriver, 10).until(
EC.visibility_of_element_located((By.SOMEHOW, someway)))
# banner found
# comment fail
# maybe raise CommentFailed()
except TimeoutException:
# banner not found
# comment success
# perhaps do nothing
推荐阅读
- python - google colab上的Keras嵌入层set_weights()错误
- sql - Oracle SQL - 此处不允许使用组功能
- reactjs - 如何将输入与状态数组进行比较,以防止重复输入
- r - 为什么我的骰子总和分布在 R 输出中的总和不正确,一旦我们达到 15+骰子(使用星形和条形计数逻辑)
- html - 如何在src 中使用模型属性的值?
- javascript - 在 iOS 上的移动 Chrome 上以 JavaScript 下载文件
- r - 如何为单元格平均 R 单元格中两个数据帧的值
- python - 从计数向量有效地计算“类 x 特征”计数
- python - 如何将熊猫数据框转换为 NumPy 数组
- r - R rolling_origin () 预测:如何使用测试数据仅在切片上执行滚动窗口