AirtestProject / AirtestProject/airtest-selenium

希望能升级对selenium4的支持

Aberta
#10 0 comentários 0 reações 0 responsáveis Ver no GitHub
enhancement
Linguagem predominante
Python
Estrelas
49
Forks
24
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

在本地selenium4的情况下运行airtest_selenium的driver.find_element_by_id
会提示UserWarning: find_element_by_* commands are deprecated. Please use find_element() instead
这个warning不理会也没问题,还是觉得老的写法方便。
下面我把proxy.py文件里的loop_find_element增加了个by参数
```python
def loop_find_element(self, func,by, text, timeout=10, interval=0.5):
"""
Loop to find the target web element by func.

Args:
func: function to find element
text: param of function
timeout: time to find the element
interval: interval between operation
Returns:
element that been found
"""
start_time = time.time()
while True:
try:
element = func(by,text)
except NoSuchElementException:
print("Element not found!")
# 超时则raise,未超时则进行下次循环:
if (time.time() - start_time) > timeout:
# try_log_screen(screen)
raise NoSuchElementException(
'Element %s not found in screen' % text)
else:
time.sleep(interval)
else:
return element
```
把find_element_by_id改成了如下
```python
def find_element_by_id(self, id):
"""
Find the web element by id.

Args:
id: find the element by attribute id.
Returns:
Web element of current page.
"""
web_element = self.loop_find_element(super(WebChrome, self).find_element,By.ID, id)
log_res = self._gen_screen_log(web_element)
return Element(web_element, log_res)
```
这样既能享受老版本的find_element_by_id的方便,还不会因为selenium版本太高而总弹出warning,不会pr,只能贴到这里了,希望能更新下,非常感谢。

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.