鱼C论坛

 找回密码
 立即注册
查看: 2732|回复: 8

[已解决]selenium怎么点击JS菜单?

[复制链接]
发表于 2020-12-14 16:08:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

公司内部网站,像这种菜单怎么点击"+"展开?
用元素定位
  1. driver.find_element_by_xpath('//*[@id="handler1"]').click()
复制代码
,提示找不到元素..


  1. <div class="TreeNode" nowrap="">
  2.     <a href="javascript:void window.TV[0].openHandler(1);" target="_self">
  3.         <img id="handler1" src="http://10.123.123.123:8088/EPD3SFC/Images/Rminus.gif" align="absmiddle">
  4.     </a>
  5.     <a target="_self" href="javascript: void window.TV[0].openFolder(1)">
  6.         <img id="icon1" src="http://10.123.123.123:8088/EPD3SFC/Images/root.gif" align="absmiddle">
  7.     </a>
  8.     <span><a id="node1" class="normal" href="javascript:void(0)" target="_self" onclick="window.TV[0].setSelected(1)">PCBA</a></span>
  9. </div>
复制代码


最佳答案
2020-12-15 09:29:09
1.看看是否有iframe,有就切换到相应iframe
2.driver.page_source看看源码,你想要的元素是否存在
3.鼠标模拟事件尽量用ActionChains类
4.还是不行,再联系我
20201214155456.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-14 21:08:13 | 显示全部楼层
这个不是原生html元素吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-14 21:56:02 | 显示全部楼层
kogawananari 发表于 2020-12-14 21:08
这个不是原生html元素吧

这个是在浏览器按F12抓出来的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 09:29:09 | 显示全部楼层    本楼为最佳答案   
1.看看是否有iframe,有就切换到相应iframe
2.driver.page_source看看源码,你想要的元素是否存在
3.鼠标模拟事件尽量用ActionChains类
4.还是不行,再联系我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 10:49:11 | 显示全部楼层
西瓜味的苹果 发表于 2020-12-15 09:29
1.看看是否有iframe,有就切换到相应iframe
2.driver.page_source看看源码,你想要的元素是否存在
3.鼠标 ...

多谢回复!
有iframe,切换到iframe再点击它下面的元素没反应,我再研究研究..
  1. iframe=driver.find_element_by_tag_name('iframe')[0]
  2. driver.switch_to.frame(iframe)
  3. pcba=driver.find_element_by_xpath('//*[@id="handler101"]')
  4. pcba.click()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 10:57:26 | 显示全部楼层
你可以写一个js代码(对一个元素添加hover事件),让driver执行,看看是否真的切换成功,如果成功,你在console窗口,写一个对应你操作的js看看成功了就行,然后在程序中直接用js就行了,应该很简单,js会写对吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 10:59:54 | 显示全部楼层
还要注意一点的是,查找元素的时候,注意加载等待,你可以用隐式等待或显示等待都可以,你这种情况推荐使用显式等待
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 11:03:46 | 显示全部楼层
西瓜味的苹果 发表于 2020-12-15 10:59
还要注意一点的是,查找元素的时候,注意加载等待,你可以用隐式等待或显示等待都可以,你这种情况推荐使用 ...

好的,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-15 11:23:39 | 显示全部楼层
有两个iframe,第一个是我要找的菜单的,第二个是主窗口的,
用下面的方法都没有切换到iframe

  1. # iframe=wait.until(EC.presence_of_element_located((By.TAG_NAME,'iframe')))[0]
  2. iframe=wait.until(EC.presence_of_all_elements_located((By.TAG_NAME,'iframe')))[0]
  3. # iframe=driver.find_elements_by_tag_name('iframe')[0]
  4. driver.switch_to.frame(iframe)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 09:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表