用Selenium获取网页上表单信息中特定的元素集

   Hello,大家好,这会我们来分享一下如何在动态的表单中通过selenium获取到我们想要的事件并且根据指定的条件筛选出来我们想要的那一项并且进行操作。

   我们知道,在一般的网页上,一个表单的数据一般是不变的,我们只需要通过xpath进行一下简单的定位就能获取到,现在的场景是,我们实际在设备上触发一次事件,接着去相应网站上去找到我们当前触发的这个事件,点击进去并进行其他的操作。

       第一次进行事件获取,小猿我是这么处理的,因为那个页面上有记录一共有多少条记录的数字,当时是偷了个懒,方法是通过获取到这个数字,然后使用for循环依次往下进行检索匹配,最省时间,效率也最高,避免了使用while 1因自己退出条件设置不合适导致死循环,反倒不如for循环检索利索,之前一直运行没啥问题,嗯,自我感觉良好。心情美美哒。

然而事实上,没过几天,我就高兴不起来了。

 

 接下来的某一天,在进行遍历检索的时候,突然好多别的设备也触发了很多的事件,并且是排布在我的事件的前面,这样在进行for循环的时候,检查的是别人的事件,自己的事件排布在当时获取事件数量之后,肯定是检索不到了。

思索半天,找到了另一个办法,也就是现在的方法

比如我们使用xpath找寻某个表格中第四列内容包含数字12345以及第一列包含字符auto trigger的信息,并且依据时间进行判断,从而选择处理哪一个事件,这是从我们测试角度进行处理的

# 这里我们就简化一下代码,只是将重要的进行展示出来,其它的大家各取所需,进行增删就行
# 这个contains还可以搭配or和not使用
all_target_event_list = driver.find_elements_by_xpath(
                "//table[@id='serviceRequesttable']/tbody/tr[td[1][contains(text(),'%s')] and td[4][contains(text(),'%s')]]" % (kwargs['call_type'], test_number))
# 这里的电话类型以及电话号码是我们外部传入的,可以进行不同号码的变化查询
# 这样执行的结果是我们会获取指定信息的那个tr对象的列表对象, 这里我们可以进行再次的处理,从而实现我们的需求,比如
# 1. 获取该列表元素的所有的文本值 我们可以使用下面的方法进行获取到
for target_event in all_target_event_list:
  # 这时是遍历其中的每一个tr对象,我们可以获取指定的td中的文本值也可以获取所有的文本值
  print(target_event.text) # 这样获取到的是这个tr对象的文本值,是包含这个tr对象下面所有td的文本值的一个字符串类型的文本值,这个一般不会用,因为意义不大
  print(target_event.find_element_by_xpath('td[8]').text) # 这样的方法用的比较多,比如第8列的内容是这个电话事件产生的时间,我们可以这样去通过校验时间值从而确定当前的这个tr对象是vu是就是我们要找的事件对象,从而进行下一步的处理,因为在网站上事件可能很多,并且新的事件也可能会随时产生,也即这个表格的数据是动态生成的,随时可能会增加数据或者删除数据,使用for循环进行挨个遍历事件不太好行得通,可能在还没有循环完,新的事件又产生,我们想要的事件可能会往后面排,这样可能会出现的结果是明明有事件产生但是我们却找不到的bug
  for td_text in target_event.find_elements_by_tag_name('td'):
    print(td_text.text) # 这样的方法是我们可以通过两层的for循环获取到我们想要找到的符合特定条件的元素对象的td的所有的文本值

获取指定元素标签下的所有的text,指的是指定的元素下面有几个是被b标签分割开的,想要一次性的全部获取

all_text = value_list[0].xpath('string(.)').strip()

这里只是摘取了部分的关键代码,由于业务原因,没有展示出来全部的代码,各位需要的话把这部分摘取到自己的代码块中,相应整合一下便好,谢谢大家~

 

更多精彩,可以关注楼主的公众号,

 

最全面的django面试题总结: 回复django面试题即可获取, pycharm供给激活压缩包, 回复pycharm破解包即可获取,破解步骤在我的这一篇博客(点我直达)已经破解百次, 屡试不爽.

以及其他楼主精心打造的原创文章,欢迎各位来访.

 

posted @ 2020-03-22 20:23  你没有想象的那么重要  阅读(1641)  评论(0编辑  收藏  举报