Тестовый пример airtest_Общие методы Airtest
Тестовый пример airtest_Общие методы Airtest

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

Несколько примеров добавления параметров устройства

#Метод 1: добавьте устройства в интерфейсе auto_setup()

auto_setup(__file__,devices=["Android://127.0.0.1:5037/SJE5T17B17"])#Метод 2: используйте метод Connect_device() для подключения к устройству

dev = Connect_device("Android://127.0.0.1:5037/SJE5T17B17")#Метод 3: используйте метод init_device() для подключения к устройству

init_device(platform=”Android”,uuid=”SJE5T17B17″)

Фильтровать несерьезные журналы

__author__ = “Airtest”

importlogging

logger= logging.getLogger(“airtest”)

logger.setLevel(logging.ERROR)

Перебрать коллекцию элементов списка

for item in range(len(freeze_poco(“List”).child())):

item=str(item)poco(“NestStarReward”).offspring(item).offspring(“T”).click()

Заморозьте poco, чтобы ускорить операции

Freeze_poco = poco.freeze() #TODO: определениеdongjiepocofreeze_poco("TheExpDlg(Clone)").offspring(item).click()

Нажмите, если элемент не существует

if not poco(“TeamDlg(Clone)”).offspring(“Categories”).offspring(“item1”).offspring(“Text”).exists():

poco(“CurrentCategory”).click()

Нажмите, если элемент существует

if poco(“TeamDlg(Clone)”).offspring(“Categories”).offspring(“item1”).offspring(“Text”).exists():

poco(“CurrentCategory”).click()

Сброс окружения следующего дела в скрипте

try:finally:

Определите, существует ли одновременно несколько элементов управления

with poco.freeze() as freeze_poco:if freeze_poco(“DetailsBtn”).exists() and\

freeze_poco(“CurrentExp”).exists() and\

freeze_poco(“Chests”).child(“item0”).exists() and\

freeze_poco(“Chests”).child(“item1”).exists() and\

freeze_poco(“Chests”).child(“item2”).exists() and\

freeze_poco(“Chests”).child(“item3”).exists() and\

freeze_poco(“Chests”).child(“item4”).exists() and\

freeze_poco(“LeftView”).child(“Exp”).exists() and\

freeze_poco(“LeftView”).child(“Exp500”).exists() and\

freeze_poco(“LeftView”).child(“Exp1000”).exists() and\

freeze_poco(“LeftView”).child(“Exp500”).child(“box”).exists() and\

freeze_poco(“LeftView”).child(“Exp1000”).child(“box”).exists() and\

freeze_poco(“DailyActivityDlg(Clone)”).offspring(“RightView”).offspring(“Go”).exists()

Убедитесь, что элемент управления находится в пределах метода кликабельного диапазона.

def Butpos(butpos,pos1=0.4,pos2=0.81,high=1330,low=930,lows=482):"""Переместить элементы управления, которые не находятся внутри экрана, на экран, чтобы ими можно было управлять.

:param Butpos: элемент управления

:param pos1: Минимальный предел экрана, на котором вы хотите разместить элемент управления.

:param pos2: Верхняя граница экрана, на которой должен располагаться элемент управления.

:param high: фиксированные координаты

:param low: скользящее начальное или конечное положение

:param lows: скользящее начальное или конечное положение

:return:”””

for i in range(50):

but=butpos.get_position()if but[1]

swipe([high, lows], [high, low],5)elif but[1] >pos2:

swipe([high, low], [high, lows],5)else:break

Получить размер экрана телефона

def_get_screen_size(devices):’Получить размер экрана телефона’size_str= os.popen(f’adb -s {devices} shell wm size’).read()if notsize_str:print('Пожалуйста, установите ADB И погонять и настраивать переменные окружения’)

sys.exit()

m= re.search(r'(\d+)x(\d+)’, size_str)ifm:

sizeheight= “{height}”.format(height=m.group(1))

sizewidth= “{width}”.format(width=m.group(2))returnint(sizeheight),int(sizewidth)return “1920×1080”

Вывод печати в журнал

_print = print

def print(*args, **kwargs):

_print(time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime()), *args, **kwargs)

Определите pcoo с помощью функций

defdeviceconnect(devices):"""Открытый метод для создания экземпляра poco

:param devices: Укажите устройство

:return:”””dev= connect_device(“android:///” +devices)

poco= UnityPoco(device=dev)return poco

Все операции, связанные с пользовательским интерфейсом, по умолчанию используют точку привязки пользовательского интерфейса в качестве рабочей точки. Если вы хотите настроить точку, вы можете использовать метод фокуса. Вызов этого метода вернет новый пользовательский интерфейс с набором фокусов по умолчанию, а повторные вызовы будут основаны на последнем вызове. Фокус использует локальную систему координат, поэтому верхний левый угол ограничивающей рамки пользовательского интерфейса является началом координат, ось X находится вправо, ось Y — вниз, а длина и ширина ограничивающей рамки равны единице. Очевидно, что центральной точкой является [0,5, 0,5]. Следующие примеры покажут некоторые общие примеры использования.

poco(‘bg_mission’).focus(‘center’).click() #click the center

Сочетание focus и drag_to также может создать эффект прокрутки. В следующем примере показано, как прокрутить список на полстраницы.

scrollView = poco(type=’ScollView’)

scrollView.focus([0.5, 0.8]).drag_to(scrollView.focus([0.5, 0.2]))

Подождите, пока пользовательский интерфейс появится в течение заданного времени, и вернитесь к этому пользовательскому интерфейсу. Если он уже существует на экране, вернитесь непосредственно к этому пользовательскому интерфейсу. Если он не появился по истечении таймаута, он также вернется, но при вызове этой операции пользовательского интерфейса будет сообщено об ошибке. Подобные операции включают wait_for_appearance.

poco(‘bg_mission’).wait(5).click() #wait 5 seconds at most,click once the object appears

poco(‘bg_mission’).wait(5).exists() #wait 5 seconds at most,return Exists or Not Exists

щелкнуть

poco.click([0.5, 0.5]) #click the center of screen

poco.long_click([0.5, 0.5], duration=3)

проведите пальцем по экрану

#swipe from A to B

point_a = [0.1, 0.1]

center= [0.5, 0.5]

poco.swipe(point_a, center)#swipe from A by given direction

direction = [0.1, 0]

poco.swipe(point_a, direction=direction)

Сделайте снимок экрана и верните его в кодировке base64. Формат скриншота (png, jpg,...) определяется соответствующей реализацией SDK, в большинстве случаев это png. Подробности см. в ScreenInterface.getScreen.

from base64 importb64decode

# Примечание. Снимки не поддерживаются в некоторых реализациях Poco.

b64img, fmt= poco.snapshot(width=720)

open(‘screen.{}’.format(fmt), ‘wb’).write(b64decode(b64img))

Исключения

PocoTargetTimeout (тайм-аут управления)

from poco.exceptions importPocoTargetTimeouttry:

poco(‘guide_panel’, type=’ImageView’).wait_for_appearance()exceptPocoTargetTimeout:#bugs here as the panel not shown

raise

PocoNoSuchNodeException (нет такого контроля)

from poco.exceptions importPocoNoSuchNodeException

img= poco(‘guide_panel’, type=’ImageView’)try:if notimg.exists():

img.click()exceptPocoNoSuchNodeException:#If attempt to operate inexistent nodes, an exception will be thrown

pass

Самая простая операция – этощелкнуть,Вы также можете нажать и удерживать(long щелкните), вы можете нажимать ее столько, сколько захотите. В следующем примере показаны эффекты щелчка и длительного нажатия.

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

poco(‘btn_start’).click()

poco(‘basic’).click()

poco(‘star_single’).long_click()

poco(‘star_single’).long_click(duration=5)

Если вы читаете значение свойства из несуществующего пользовательского интерфейса или используете его, будет вызвано исключение. Если вы не уверены, существует ли пользовательский интерфейс, вы можете вызвать его. .exists() судить。в конкретномтеств случае использования,Если появляется аномальное сообщение, потому что пользовательский интерфейс не существует,Скорее всего это ошибка игры/приложения.,Не игнорируй это

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

btn= poco(‘btn_start’)

btn.click()print(btn.get_text()) #=> ‘Start’

intro= poco(‘introduction’)print(intro.get_text()) #=> ‘xxxx’

print(intro.attr(‘text’)) #=> ‘xxxx’

print(intro.attr(‘type’)) #=> ‘Text’

print(intro.attr(‘texture’)) #=> None. Because there is no texture on Text.

print(intro.attr(‘foo-bar’)) #=> None. Because “intro” dose not have an attribute named “foo-bar”.

intro.click()#Perform a click on any UI objects are allowed.

obj= poco(‘foo-bar’, type=’FooBar’)print(obj.exists()) #=> False. This UI does not exist actually

invisible_obj= poco(‘result_panel’, type=’Layer’)print(invisible_obj.exists()) #=> False. This UI is not visible to user.

Проведите пальцем по экрану

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()#swipe the list view up

poco(‘Scroll View’).swipe([0, -0.1])

poco(‘Scroll View’).swipe(‘up’) #the same as above, also have down/left/right

poco(‘Scroll View’).swipe(‘down’)#perform swipe without UI selected

x, y = poco(‘Scroll View’).get_position()

end= [x, y – 0.1]

dir= [0, -0.1]

poco.swipe([x, y], end)#drag from point A to point B

poco.swipe([x, y], direction=dir) #drag from point A toward given direction and length

При автоматизированном тестировании пользовательского интерфейса наиболее важным моментом является выбор целевого пользовательского интерфейса. В обычных обстоятельствах выбор по имени является самым простым способом, но в некоторых случаях не каждый элемент управления пользовательского интерфейса имеет имя, особенно пользовательский интерфейс, который динамически создается и загружается с помощью кода, обычно не имеет значимого имени. Poco предоставляет мощные и эффективные методы выбора. Вы можете не только выбрать один атрибут пользовательского интерфейса, но также выбрать целевой пользовательский интерфейс с помощью иерархических отношений и позиционных отношений между пользовательскими интерфейсами. Что еще более важно, так это то, что три вышеупомянутых режима можно использовать в любой серии или комбинации, что позволяет справиться со всеми ситуациями.

В следующем примере показано, как выбрать соответствующий элемент управления пользовательского интерфейса в сложной иерархии.

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

items= poco(‘main_node’).child(‘list_item’).offspring(‘name’):

first_one=items[0]print(first_one.get_text()) #=> «1/2 зелья жизненной силы»

first_one.click(

Диапазон значений координат в poco зависит от экрана. Ширина и высота экрана равны единице, поэтому их также называют процентными координатами. Когда вам нужно взаимодействовать с элементами управления пользовательского интерфейса рядом с определенным элементом управления пользовательского интерфейса или нажать на край кнопки, а не на середину, вы можете использовать локальное позиционирование.

В общем, взаимодействие с элементами управления пользовательского интерфейса в конечном итоге предполагает взаимодействие с координатами. Например, нажатие кнопки фактически означает нажатие определенной координаты. Локальное позиционирование может быть смещено в зависимости от верхнего левого угла определенного пользовательского интерфейса, а затем вы можете щелкнуть различные координаты внутри элемента управления пользовательского интерфейса или даже другие координаты за пределами пользовательского интерфейса.

#coding=utf-8

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

image= poco(‘fish’).child(type=’Image’)

image.focus(‘center’).long_click()

time.sleep(0.2)

image.focus([0.1, 0.1]).long_click()

time.sleep(0.2)

image.focus([0.9, 0.9]).long_click()

time.sleep(0.2)

image.focus([0.5, 0.9]).long_click()

time.sleep(0.2)

Вы также можете щелкнуть за пределами выбранного пользовательского интерфейса. Полезно нажать на какую-нибудь модель по ее названию.

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

balloonfish_image= poco(text=’balloonfish’).focus([0.5, -3])

balloonfish_image.long_click()

В следующем примере показано, что фокус — это неизменяемый метод, который не влияет на исходный пользовательский интерфейс.

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()#focus is immutable

fish = poco(‘fish’).child(type=’Image’)

fish_right_edge= fish.focus([1, 0.5])

fish.long_click()#still click the center

time.sleep(0.2)

fish_right_edge.long_click()#will click the right edge

time.sleep(0.2)

В следующем примере показано, как использовать перетаскивание для прокрутки списка.

#coding=utf-8

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

listView= poco(‘Scroll View’)

listView.focus([0.5, 0.8]).drag_to(listView.focus([0.5, 0.2]))

time.sleep(1)

Poco предоставляет очень простой способ обработки серии взаимодействий пользовательского интерфейса: просто используйте цикл for для итерации. В цикле for объектом каждой итерации является прокси-сервер пользовательского интерфейса, поэтому вы можете получить доступ к свойствам объекта и выполнять операции с объектом, как упоминалось ранее.

В примере ниже показано, как перебирать перетаскивание.

#coding=utf-8

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

poco(‘btn_start’).click()

poco(text=’drag drop’).click()

time.sleep(1.5)

shell= poco(‘shell’).focus(‘center’)for star in poco(‘star’):

star.drag_to(shell)

time.sleep(1)assert poco('scoreVal').get_text() == «100», «оценка верна #Это еще один метод утверждения».

poco(‘btn_back’, type=’Button’).click()

Вот еще один пример перебора всех названий модели.

#coding=utf-8

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()for name in poco(‘plays’).offspring(‘fish’).child(‘name’):print(name.get_text()) #pearl/shark/balloonfish

В следующем примере показано, как приобрести все продукты на текущем экране интерфейса торгового центра.

#coding=utf-8

poco=Poco(…)

bought_items=set()for item in poco(‘main_node’).child(‘list_item’).offspring(‘name’):#get its text value

item_name =item.get_text()#markdown the bought item

if item_name not inbought_items:

item.click()

bought_items.add(item_name)

Это исключение конкретно относится к недопустимым операциям или операциям, которые не работают, например, щелчку за пределами экрана или установке атрибута текста на изображении (атрибут текста можно установить только в полях ввода). Хотя это исключение не окажет существенного влияния на приложение, его следует избегать, насколько это возможно, во избежание путаницы в логике тестового сценария или нестабильных результатов тестирования.

#coding=utf-8

from poco.drivers.unity3d importUnityPocofrom poco.exceptions importInvalidOperationException

poco=UnityPoco()try:

poco.click([1.1, 1.1]) #click outside screen

exceptInvalidOperationException:print(‘oops’)

Это исключение возникает, если вы читаете свойства или управляете несуществующим элементом управления пользовательского интерфейса. Чтобы проверить, существует ли элемент управления пользовательского интерфейса, можно вызвать метод .exists() делегата пользовательского интерфейса.

#coding=utf-8

from poco.drivers.unity3d importUnityPocofrom poco.exceptions importPocoNoSuchNodeException

poco=UnityPoco()

node= poco('не существующий узел') #select никогда не выдаст никаких исключений

try:

node.click()exceptPocoNoSuchNodeException:print(‘oops!’)try:

node.attr(‘text’)exceptPocoNoSuchNodeException:print(‘oops!’)print(node.exists()) #=> Фальшивый. Этот метод не повышает

Это исключение будет создано только тогда, когда вы активно ожидаете появления или исчезновения пользовательского интерфейса. Оно отличается от PocoNoSuchNodeException. Когда ваша скорость работы слишком высока и у интерфейса нет времени на изменение, вы столкнетесь только с PocoNoSuchNodeException вместо PocoTargetTimeout. Фактически, именно в этом пользовательском интерфейсе хочется что-то сделать еще до того, как он появится.

В следующем примере показано, как тестовый сценарий поддерживает синхронизацию с пользовательским интерфейсом и обрабатывает исключения PocoTargetTimeout.

#coding=utf-8

from poco.drivers.unity3d importUnityPocofrom airtest.core.api importconnect_devicefrom poco.exceptions importPocoTargetTimeout

poco=UnityPoco()#UI is very slow

poco(‘btn_start’).click()

star= poco(‘star’)try:

star.wait_for_appearance(timeout=3) #wait until appearance within 3s

exceptPocoTargetTimeout:print(‘oops!’)

time.sleep(1)

В отличие от PocoTargetTimeout, описанного выше, если скорость работы намного медленнее, чем скорость изменений пользовательского интерфейса, это исключение *вероятно* произойдет. Это исключение возникает только при доступе или работе с элементом управления пользовательского интерфейса, который был там только что, но больше не существует и обычно не отображается.

В следующем примере показан эффект щелчка элемента управления пользовательского интерфейса, который больше не существует.

#coding=utf-8

from poco.exceptions importPocoTargetRemovedException, PocoNoSuchNodeException

# Это исключение возникает только в некоторых реализациях poco-sdk, поэтому более надежным подходом является явный вызов .exists(), когда необходимо определить, существует ли пользовательский интерфейс.

poco=Poco(…)

start= poco(‘start’)print(start.exists()) #=> True.

start.click()print(start.exists()) #=> False

try:

start.click()exceptPocoTargetRemovedException:print(‘oops!’)#IMPORTANT NOTE:#`start2` is different from `start` !#`start` is tracking the UI at initial and it knows itself was removed but `start2`#does not know anything before.

start2 = poco(‘start’)try:

start2.click()exceptPocoNoSuchNodeException:print(‘oops!’)

Это исключение возникает только в некоторых реализациях poco-sdk, поэтому более надежным подходом является явный вызов .exists(), когда необходимо определить, существует ли пользовательский интерфейс.

на poco.drivers.std. StdPoco, это исключение никогда не возникало!

#coding=utf-8

from poco.drivers.unity3d importUnityPocofrom airtest.core.api importconnect_device

poco=UnityPoco()#no PocoTargetRemovedException case

start = poco(‘start’)print(start.exists()) #=> True.

start.click()print(start.exists()) #=> False

#ВАЖНО: В программном обеспечении Unity3d эта операция будет выполняться по тем же координатам, что и раньше #Что бы ни случилось

start.click()

В некоторых сложных тестовых случаях невозможно просто постоянно активно управлять или читать свойства. Пассивное получение событий изменения состояния пользовательского интерфейса помогает писать тестовые сценарии, которые не сбивают с толку. Poco предоставляет простой механизм опроса для одновременного опроса одного или нескольких элементов управления пользовательского интерфейса. Так называемый опрос предназначен для определения того, существует ли пользовательский интерфейс по очереди.

В следующем примере показана простейшая синхронизация пользовательского интерфейса.

#coding=utf-8

from poco.drivers.unity3d importUnityPoco

poco=UnityPoco()#start and waiting for switching scene

start_btn = poco(‘start’)

start_btn.click()

start_btn.wait_for_disappearance()#waiting for the scene ready then click

exit_btn = poco(‘exit’)

exit_btn.wait_for_appearance()

exit_btn.click()

В следующем примере показано, как ожидать опроса пользовательского интерфейса. Когда появится какой-либо пользовательский интерфейс, перейдите вниз.

#coding=utf-8

from poco.drivers.unity3d importUnityPocofrom poco.exceptions importPocoTargetTimeout

poco=UnityPoco()

bomb_count=0whileTrue:

blue_fish= poco(‘fish_emitter’).child(‘blue’)

yellow_fish= poco(‘fish_emitter’).child(‘yellow’)

bomb= poco(‘fish_emitter’).child(‘bomb’)

fish=poco.wait_for_any([blue_fish, Yellow_fish, бомба])if рыба-бомба:#Пропустить бомбу, досчитать до 3 и выйти

bomb_count += 1

if bomb_count > 3:return

else:# В противном случае нажмите на рыбу, чтобы ее собрать.

fish.click()

time.sleep(2.5)

В следующем примере показано, как дождаться появления всего пользовательского интерфейса перед отключением при опросе пользовательского интерфейса.

#coding=utf-8

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

poco(text=’wait UI 2′).click()

blue_fish= poco(‘fish_area’).child(‘blue’)

yellow_fish= poco(‘fish_area’).child(‘yellow’)

shark= poco(‘fish_area’).child(‘black’)

poco.wait_for_all([blue_fish, yellow_fish, shark])

poco(‘btn_back’).click()

time.sleep(2.5)

Представляем метод ускорения операций пользовательского интерфейса (то есть замораживания пользовательского интерфейса), который эффективен только для сложных выборов и обходов пользовательского интерфейса. Если вы просто выбираете по имени, не используйте этот метод, поскольку он не имеет никакого эффекта. На самом деле заморозка пользовательского интерфейса — это именно то, что иерархия текущего интерфейса, включая всю информацию об атрибутах пользовательского интерфейса, фиксируется и сохраняется в памяти. При взаимодействии с пользовательским интерфейсом атрибуты пользовательского интерфейса считываются непосредственно из памяти вместо отправки запросов RPC. в игру/приложение для управления пользовательским интерфейсом. Преимущество в том, что его можно получить один раз (затрачивая сотни миллисекунд) и можно использовать несколько раз. Чтение свойств пользовательского интерфейса практически не занимает времени. В то же время недостатком является то, что вам нужно вручную обрабатывать синхронизацию пользовательского интерфейса. определенный элемент управления пользовательского интерфейса изменяется после захвата иерархии. Произошло изменение. Если вы все еще нажимаете на этот пользовательский интерфейс в это время, вы щелкнете по исходной позиции, а не по последней позиции. Это может легко привести к странным результатам теста.

Следующие два примера показывают разницу между использованием замороженного и неиспользованием замороженного пользовательского интерфейса соответственно.

Freezing UI

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

with poco.freeze() as frozen_poco:

t0=time.time()for item in frozen_poco(‘Scroll View’).offspring(type=’Text’):printitem.get_text()

t1=time.time()print t1 – t0 #около 6 ~ 8 секунд

No Freezing UI

importtimefrom poco.drivers.unity3d importUnityPoco

poco=UnityPoco()

t0=time.time()for item in poco(‘Scroll View’).offspring(type=’Text’):printitem.get_text()

t1=time.time()print t1 – t0 #около 50 ~ 60 с

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Данный сайт лишь предоставляет услуги по хранению информации, не имеет никаких прав собственности и не несет соответствующей юридической ответственности. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/234846.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода