作为一个Python新手、经常会遇到一些别人遇到过的问题、然而这次遇到了这个问题、在网上看了许多答案依然没有解决我的问题、就先把代码贴出来、给自己留个课题、(已解决)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
b = webdriver.Chrome()
b.get("http://192.168.3.184/ecshop/admin/")
b.find_element_by_name("username").send_keys("admin")
b.find_element_by_name("password").send_keys("abcd1234")
b.find_element_by_class_name("btn-a").click()
b.switch_to.frame("header-frame")
b.find_element_by_xpath("//a[@href='users.php?act=list']").click()
b.switch_to.default_content()
b.switch_to.frame("main-frame")
num = b.find_element_by_id("totalRecords").text
b.find_element_by_id("pageSize").clear()
b.find_element_by_id("pageSize").send_keys(num)
b.find_element_by_id("pageSize").send_keys(Keys.ENTER)
print(num)
b.implicitly_wait(10)
count = 0
for i in range(int(num)):
res = str(int(i) + 3)
name = b.find_element_by_xpath("//tr[%s]/td[@class='first-cell']" % res).text
if name == "胖虎!@#$%^&*":
b.find_element_by_xpath("//tr[%s]/td[1]/input[@name='checkboxes[]']" % res).click()
b.find_element_by_xpath("//input[@value='删除会员']").click()
time.sleep(2)
b.switch_to.alert().accept()
# print(alert1.text)
# alert1.accept()
print("删除成功")
count += 1
if count == 0:
print("账户不存在")
-----------------------------------------------分割线-----------------------------------------------------------
虽然问题解决了、但结果并不像我现象中那样、参照了网上别人创建自定义异常的方法、一开始写自定义异常方法失败是因为Python版本问题、照搬别人的异常失败了、才觉得没用、
我用的是Python3.6、后来又找了找Python3.6的自定义异常修改方法、修改了一下然后成功了、
然而除了这个异常之外、上述代码中还有一个被我忽略了的bug、是29行的b.switch_to.alert().accept()、
这句代码中alert是不能加括号的、括号去掉之后、完美运行、
修改后的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
def myExceptionFunctionForText(url):
count = 0
name = None
while count < 3:
try:
name = b.find_element_by_xpath(url).text
break
except Exception:
name = b.find_element_by_xpath(url).text
if name != None:
break
count += 1
if name == None:
name = Exception
return name
def myExceptionFunctionForClick(url):
res = False
count = 0
while count < 3:
try:
b.find_element_by_xpath(url).click()
res = True
break
except Exception:
b.find_element_by_xpath(url).click()
count += 1
return res
b = webdriver.Chrome()
b.get("http://192.168.3.184/ecshop/admin/")
b.find_element_by_name("username").send_keys("admin")
b.find_element_by_name("password").send_keys("abcd1234")
b.find_element_by_class_name("btn-a").click()
b.switch_to.frame("header-frame")
b.find_element_by_xpath("//a[@href='users.php?act=list']").click()
b.switch_to.default_content()
b.switch_to.frame("main-frame")
num = b.find_element_by_id("totalRecords").text
b.find_element_by_id("pageSize").clear()
b.find_element_by_id("pageSize").send_keys(num)
b.find_element_by_id("pageSize").send_keys(Keys.ENTER)
# print(num)
b.implicitly_wait(10)
count = 0
inputName = input("请输入你要删除的用户名:")
for i in range(int(num)):
res = str(int(i) + 3)
textUrl = "//tr[%s]/td[@class='first-cell']" % res
name = myExceptionFunctionForText(textUrl)
# name = b.find_element_by_xpath("//tr[%s]/td[@class='first-cell']" % res).text
if name == inputName:
url = "//tr[%s]/td[1]/input[@name='checkboxes[]']" % res
# b.find_element_by_xpath("//tr[%s]/td[1]/input[@name='checkboxes[]']" % res).click()
if myExceptionFunctionForClick(url):
pass
b.find_element_by_xpath("//input[@value='删除会员']").click()
b.switch_to.alert.accept()
time.sleep(2)
print("删除成功")
count += 1
break
if count == 0:
print("账户不存在")