如何通过selenium完成问卷调查?

发表于:2021-3-26 09:32

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:coffeetogether    来源:CSDN

  案例目的:
  介绍对问题和问题选项所在的节点进行xpath定位,以及实现鼠标点击操作。
  案例实现的功能:
  快速自动完成问卷调查。
  下面开始案例的分析:
  打开网址我们发现一共有21个问题,第一个问题时比较特殊,因为只包含一两个选项。因此,我们在可以先完成前三个问题,然后剩下的问题统一处理。那么我们的程序里会出现if判断语序。
  其次就是重点,怎样对问题的选项进行定位和点击呢?
  大家会发现,我们的右键检查没法用了,因为没法点击右键。
  解决办法:
  按F12键进入检查,点击左上角带箭头的小方框,然后再点击问题的选项,就会进入到其所在的位置。如下图:
  注意:我们定位的是代表每个选项的标签,而不是选项的文本。
  例如,我们定位到选项“男”,对应的并不是下面的label文本男,而是男这个选项对应的标签a。而且通过定位选项女所在的位置,我们发现了一个规律:
  也就是图上标注的第一个问题的第一个选项的rel属性为q1_1,第一个问题的第二个选项则为q1_2。因此,我们可以判定“q第m个问题_问题的第n个选项”。基于这个规律,我们就可以定位到每个问题和选项对应的标签位置。
  找到了问题标签的规律,还差一个就是提交选项
  对于提交选项对应的节点位置,我们可以通过id="submit_button"进行定位。
  所有标签位置已经定位完毕,剩下就是点击了。
  如何点击就简单了,就是一个click()就能搞定了的。
  分析完毕,上代码:
  from selenium.webdriver import Chrome
  import random
  if __name__ == '__main__':
      # 创建浏览器对象
      chrome = Chrome()
      # 在网址栏输入url,进入页面
      chrome.get('https://www.wjx.cn/jq/37766520.aspx')
      # 最大化页面
      chrome.maximize_window()
      # 队第一个问题进行特殊处理
      click_obj = chrome.find_element_by_xpath(f'//a[@rel="q1_{random.randint(1,2)}"]')
      click_obj.click()
      # 选择剩下的几个规律相同的选项
      for i in range(2,22):
          click_obj = chrome.find_element_by_xpath(f'//a[@rel="q{i}_{random.randint(1,4)}"]')
          click_obj.click()
      # 最后的提交,可以通过id进行识别
      submit_obj = chrome.find_element_by_id('submit_button')
      # 点击提交
      submit_obj.click()
  执行结果如下:
  最后出现了个小插曲,这个案例是我上一年讲的,但是今年却出现了只能验证。应该是对selenium进行的一个反爬手段,我试着解决怎样处理这个验证。此次案例主要是对整个过程的了解,谢谢大家的阅读。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号