51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3238|回复: 14
打印 上一主题 下一主题

selenium+python无法定位网页上弹框的按钮,求指教!

[复制链接]
  • TA的每日心情

    2016-5-24 16:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    #
    发表于 2016-9-26 15:27:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    网页上的弹框的按钮一直定位不到,id是动态的,通过xpath相对路径依然无法定位
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    14#
    发表于 2016-10-8 15:10:52 | 只看该作者
    suxi 发表于 2016-9-27 10:16
    alert是不是不可以使用F12中的箭头去获取元素?
    我将脚本修改成alert的形式,但是报错
        raise excep ...

    用楼上所说的方法,获取当前窗口,再用for循环,我之前遇到过,封装的alert不能用alert的accept,用句柄应该可以,你试试。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-11-4 11:04
  • 签到天数: 274 天

    连续签到: 1 天

    [LV.8]测试军长

    13#
    发表于 2016-9-27 14:40:40 | 只看该作者
    是不是没有加等待时间?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-5-24 16:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    12#
     楼主| 发表于 2016-9-27 14:19:12 | 只看该作者
    若尘_51 发表于 2016-9-27 11:20
    是你写的脚本有错,我用你的脚本跑了一遍,修改后就可以跑通了(不好意思删除你的一条记录,另外提醒下记 ...

    问题已解决,非常感谢,也非常感谢提醒!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    11#
    发表于 2016-9-27 11:20:18 | 只看该作者
    本帖最后由 若尘_51 于 2016-9-27 13:54 编辑
    suxi 发表于 2016-9-26 17:18
    #coding=utf-8
    from selenium import webdriver

    是你写的脚本有错,我用你的脚本跑了一遍,修改后就可以跑通了(不好意思删除你的一条记录,另外提醒下记得修改下密码,以免别用用心的人利用了):
    time.sleep(5)
    sure=driver.find_element_by_xpath("//div[@class_name='modal-content']/div[3]/div/div/button[2]")
    sure.click()
    time.sleep(3)

    修改成:
    time.sleep(3)
    driver.find_element_by_xpath("//*[@class='modal-content']/div[3]/div/div/button[2]").click()
    time.sleep(3)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-5-24 16:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
     楼主| 发表于 2016-9-27 10:16:39 | 只看该作者
    huzhaoqiang5566 发表于 2016-9-26 21:25
    是alert的话,要先接受这个警告。再做处理的。
    a=driver.switch_to_alert()
    a.accept()

    alert是不是不可以使用F12中的箭头去获取元素?
    我将脚本修改成alert的形式,但是报错
        raise exception_class(message, screen, stacktrace)
    NoAlertPresentException: Message: No alert is present
    是不是说说明这个并不是alert?
    但问了开发,开发说是alert,只是封装起来了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-24 13:41
  • 签到天数: 314 天

    连续签到: 1 天

    [LV.8]测试军长

    9#
    发表于 2016-9-27 09:45:04 | 只看该作者
    可以参考下面的代码:
    #获得当前窗口
    nowhandle=driver.current_window_handle
    #打开弹窗
    driver.find_element_by_name("页面上的删除元素id或者name").click()
    #获得所有窗口
    allhandles=driver.window_handles
    for handle in allhandles:
        #比较当前窗口是不是原先的窗口
        if handle!=nowhandle:
            #获得当前窗口的句柄
            driver.switch_to_window(handle)
            #在当前窗口操作
            dirver.find_element_by_class_name("删除元素class的值").click()
    #回到原先的窗口
    driver.switch_to_window(nowhandle)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-6-1 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2016-9-26 21:25:50 | 只看该作者

    是alert的话,要先接受这个警告。再做处理的。
    a=driver.switch_to_alert()
    a.accept()
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-5-24 16:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
     楼主| 发表于 2016-9-26 17:20:35 | 只看该作者
    huzhaoqiang5566 发表于 2016-9-26 16:53
    说错了。是不是alert?

    是的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-5-24 16:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2016-9-26 17:19:16 | 只看该作者
    huzhaoqiang5566 发表于 2016-9-26 16:57
    而且,最后一句好像写错了。既然你把那个元素给了sure变量。那上面那行最后面就不能在跟.click()

    已修改,但是还是一样报错
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-5-24 16:38
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2016-9-26 17:18:38 | 只看该作者
    本帖最后由 suxi 于 2016-9-27 14:26 编辑
    若尘_51 发表于 2016-9-26 16:21
    朋友,附个图吧。

    #coding=utf-8
    from selenium import webdriver

    import time

    driver=webdriver.Firefox()
    driver.get("http://www.inboundmarketing.cn")

    #窗口最大化
    driver.maximize_window()
    #登录
    driver.find_element_by_id("username").clear()
    driver.find_element_by_id("username").send_keys("???")
    driver.find_element_by_id("password").clear()
    driver.find_element_by_id("password").send_keys("???")
    driver.find_element_by_id("login-btn").click()

    time.sleep(2)

    #跳转到:用户
    driver.find_element_by_link_text("用户").click()
    time.sleep(2)

    #跳转到:联系人
    driver.find_element_by_xpath("//div[@id='left-menu']/div[3]/a/div/div/span[2]").click()

    time.sleep(2)
    #跳转到联系人分组
    driver.find_element_by_link_text("联系人分组").click()

    time.sleep(2)
    #选择
    driver.find_element_by_xpath("//*[@id='group-page-list']/tbody/tr[2]/td[1]/input").click()

    time.sleep(2)
    driver.find_element_by_xpath("/html/body/div[2]/div[1]/div/div/div[3]/div/a").click()
    #delete=driver.find_element_by_tag_name("a").find_element_by_class_name("btn btn-primary")
    #delete.click()

    time.sleep(5)

    sure=driver.find_element_by_xpath("//div[@class_name='modal-content']/div[3]/div/div/button[2]")
    sure.click()

    time.sleep(3)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-6-1 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2016-9-26 16:57:13 | 只看该作者
    而且,最后一句好像写错了。既然你把那个元素给了sure变量。那上面那行最后面就不能在跟.click()
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-6-1 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2016-9-26 16:53:24 | 只看该作者
    说错了。是不是alert?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-6-1 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2016-9-26 16:52:31 | 只看该作者
    这个弹框是不是个assert呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    1#
    发表于 2016-9-26 16:21:45 | 只看该作者
    朋友,附个图吧。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-21 20:49 , Processed in 0.096104 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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