python+selenium获取一组元素后,如何在遍历中,用js操作遍历的元素

新手上路,请多包涵

我想定位一组元素,但实际上要实现的是,定时轮巡判断该组元素父元素的兄弟元素中的一个class状态。
现在卡在,通过python+selenium获取该元素组后,如何遍历并通过JS来操作该元素。
代码如下:

#获取该组元素
itemAll=bs.find_elements_by_css_selector('.h_scorm_content')
#遍历
for x in itemAll:
    item=x
    #先判断一次该元素的class状态
    state=bs.execute_script('return $(arguments[0]).parentNode.parentNode.firstChild.getAttribute("class")=="scorm completed",item')
    while state==True:
        #每隔10秒检测一次,并再次获取state
        time.sleep(10)
        state=bs.execute_script('return $(arguments[0]).parentNode.parentNode.firstChild.getAttribute("class")=="scorm completed",item')
        continue
    
    
阅读 7.7k
2 个回答
✓ 已被采纳新手上路,请多包涵

已经解决了,JS可以获取python+selenium的传参,通过如下方法

itemAll= bs.find_elements_by_class_name('元素组')
for x in range(len(itemAll)):
    item=itemAll[x]
    state=bs.execute_script('return arguments[0].parentNode.parentNode.firstChild.getAttribute("class")=="scorm completed"',item)
    print state

你的问题描述的不是很让人明白,简单说一下我的想法:
1.itemAll=bs.find_elements_by_css_selector('.h_scorm_content')
这个获取元素的动作完成后,后面你做了操作和这个没有关系了,因为这个被读进了内存中,如果之后因为js的操作使dom树结构发生了变化,你需要重新获取该节点下的所有标签。

2.如果你需要在代码中执行js,推荐一个库在github上可以搜到 js2py。可以运行简单的js代码,但是如果你的js代码依赖了浏览器窗口属性等,则不支持。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题