selenium+python无法定位网页上弹框的按钮,求指教!
网页上的弹框的按钮一直定位不到,id是动态的,通过xpath相对路径依然无法定位 朋友,附个图吧。 这个弹框是不是个assert呢? 说错了。是不是alert? 而且,最后一句好像写错了。既然你把那个元素给了sure变量。那上面那行最后面就不能在跟.click() 本帖最后由 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/a/div/div/span").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/td/input").click()
time.sleep(2)
driver.find_element_by_xpath("/html/body/div/div/div/div/div/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/div/div/button")
sure.click()
time.sleep(3) huzhaoqiang5566 发表于 2016-9-26 16:57
而且,最后一句好像写错了。既然你把那个元素给了sure变量。那上面那行最后面就不能在跟.click()
已修改,但是还是一样报错 huzhaoqiang5566 发表于 2016-9-26 16:53
说错了。是不是alert?
是的 suxi 发表于 2016-9-26 17:20
是的
是alert的话,要先接受这个警告。再做处理的。
a=driver.switch_to_alert()
a.accept()
可以参考下面的代码:
#获得当前窗口
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) 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,只是封装起来了 本帖最后由 若尘_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/div/div/button")
sure.click()
time.sleep(3)
修改成:
time.sleep(3)
driver.find_element_by_xpath("//*[@class='modal-content']/div/div/div/button").click()
time.sleep(3) 若尘_51 发表于 2016-9-27 11:20
是你写的脚本有错,我用你的脚本跑了一遍,修改后就可以跑通了(不好意思删除你的一条记录,另外提醒下记 ...
问题已解决,非常感谢,也非常感谢提醒!:loveliness: 是不是没有加等待时间? suxi 发表于 2016-9-27 10:16
alert是不是不可以使用F12中的箭头去获取元素?
我将脚本修改成alert的形式,但是报错
raise excep ...
用楼上所说的方法,获取当前窗口,再用for循环,我之前遇到过,封装的alert不能用alert的accept,用句柄应该可以,你试试。
页:
[1]