После запуска службы заставки я захожу на порт службы заставки на веб-странице (http://192.168.99.100:8050)
Запустив мой lua_script, я хочу зайти на веб-страницу QQ (популярное приложение для китайского чата) и автоматически удалить соответствующие комментарии (которые я выбрал)
но когда я запускаю свой скрипт, я нахожу проблему: element.click или element: mouse_click {} не работает !?
Сначала я хочу объяснить свой код, а затем снова поднять свой вопрос. Если вы действительно хотите помочь плз прочитать до конца! Я действительно ценю это!
1.Первый вход на страницу
2. Во-вторых, я хочу найти подходящие комментарии и удалить все это.
это часть веб-страницы, когда я вхожу в систему (чёрт, я не могу опубликовать изображение ......)
элемент: div.comments-контент
мы можем видеть, что он содержит элемент a[class='nickname name c_tx q_namecard']
и
a.act-delete[data-cmd='qz_delete']
элемент a.act-delete[data-cmd='qz_delete']
является невидимым , если мышь не наведена на div.comments-content
, поэтому я выбираю элемент a[class='nickname name c_tx q_namecard']
, который находится внутри div.comments-content
для наведения мыши
и еще одна вещь, которую вы должны знать, это то, что не все комментарии могут быть удалены мной, поэтому количество кнопок удаления отличается от комментариев. необходимо записать индекс комментария, который должен быть удален, и индекс кнопки удаления, который соответствует комментарию, который должен быть удален. (.... я не знаю, разъясню ли я .....)
local content={} --record the matched comment
local text = splash:select_all("div.comments-content") -- select comment div
local comment = splash:select_all("a[class='nickname name c_tx q_namecard']")
-- select comment
local delete = splash:select_all("a.act-delete[data-cmd='qz_delete']")
-- select delete button
local t = {} -- save all comments texts
local g={} -- save comments that i can delete
local i=0 -- count
local child -- check the delete button node of
local commentloc= {} --record the index of comments that should be deleted
local info -- return self-edited information
local deleteloc = {} -- record the index of the delete button of comments that should be deleted
--count how many comments i can delete
for _, item in ipairs(delete) do
g[#g+1]=item:text()
end
for _ ,item in ipairs(text) do
t[#t+1] = item:text() -- save all comments in the format->[nickname,comments,time]
child = item.lastChild.lastChild --find a comment and check whether i can delete it("删除" in English means delete)
if child:text()=="删除" then
i = i+1
end
-- find if the comments meet the requirements (i wanna delete comments contain 'acjeismmsekks','test'and '@' whose length is larger than 130)
if (string.find(item:text(),"acjeismmsekks") or string.find(item:text(),"test") or ( string.len(item:text())>130 and
string.find(item:text(),"@") )) then
deleteloc[#deleteloc+1] = i --record which controllable comment to delete
commentloc[#commentloc+1] = _ --record the location of the comment
content[#content+1]=item:text() --record the matched comment to count
end
end -- for _ ,item in ipairs(text) do
-- a flag to indicate whether to find or not
local flag="not match!"
if #content >0 then
flag="find "..tostring(#content).." matched comments"
end
i=1 -- reset the i
-- begin to delete matched comments
while( i <= #deleteloc) do
-- hover on the element a[class='nickname name c_tx q_namecard'] to make
delete button visible
text[commentloc[i]]:mouse_hover{x=0,y=0}
-- click the delete button
delete[deleteloc[i]].click()
-- hold on a second
splash:wait(0.5)
-- select the confirmation button to delete
if splash:select("a[class='qz_dialog_layer_btn qz_dialog_layer_sub']") then
--this is where the problem occurs
splash:select('a[class="qz_dialog_layer_btn qz_dialog_layer_sub"]').click()
info="confirmation button clicked!"
else
info = "no confirmation button!"
end -- splash:select...
i=i+1
end -- for
Теперь, если вы понимаете, что я делаю, я хочу выяснить, почему код (splash: select ('a [class = "qz_dialog_layer_btn qz_dialog_layer_sub"]'). Click ()) не работает? Кажется, ничего не щелкает ..
каждый раз, когда я запускаю скрипт, я получаю png ниже, показывающий, что я не нажимал кнопку подтверждения, и , конечно, я проверял только вручную, чтобы найти, что комментарии все еще там не восстановлены
всплывающее окно подтверждения
(содержимое окна на английском языке означает: Вы уверены, что хотите удалить комментарий? слева btn: да справа btn: нет)
Но если есть более одного совпавшего комментария, первый комментарий будет удален, оставив остальные без изменений
так странно! .....
Если у вас есть какие-либо вопросы, пожалуйста, оставьте свои комментарии ниже, я проверяю этот вопрос каждые несколько часов. И я действительно хочу решить эту проблему, потому что она удерживает меня на 3 дня ~ ... Спасибо за вашу помощь!