我必须通过按正确的顺序单击一些按钮来输入密码(数字)。问题在于每个按钮都有一对值(例如:“ 1 ou 4”,“ 3 ou 8”),并且每次用户进入页面时,这些值都会改变。
我实现了一个for循环,将每个元素(按钮)的文本与字符串列表中包含的密码进行匹配。问题是它在前两天就可以使用,但是现在只在第三对按钮中单击。在这种情况下,按钮“ 1 ou 4”和删除按钮。
请注意,'clave'是包含密码的字符串。
a = dv.find_elements_by_id('campoTeclado')
index=0
lista_acceso = []
for elem in clave:
lista_acceso.append(elem)
for i in a:
texto = i.text.replace(' ou ', '')
time.sleep(2)
if lista_acceso[index] in texto:
print(lista_acceso[index]+' '+texto)
i.click()
time.sleep(2)
index +=1
以下是HTML:
<div class="teclado clearfix">
<div class="teclas clearfix">
<a href="javascript:;" id="campoTeclado" rel="tecla_A" class="tecla left" role="button" tabindex="0">6 ou 7</a>
<a href="javascript:;" id="campoTeclado" rel="tecla_C" class="tecla left" role="button" tabindex="0">3 ou 9</a>
<a href="javascript:;" id="campoTeclado" rel="tecla_K" class="tecla left" role="button" tabindex="0">1 ou 4</a>
<a href="javascript:;" id="campoTeclado" rel="tecla_F" class="tecla left" role="button" tabindex="0">0 ou 5</a>
<a href="javascript:;" id="campoTeclado" rel="tecla_G" class="tecla left" role="button" tabindex="0">2 ou 8</a>
<a href="javascript:;" aria-label="apagar todo o campo de senha eletrônica" class="tecla icon left" id="btnApagar" rel="teclaLimpar" role="button" tabindex="0"><span class="icon-tecla-voltar">Apagar</span></a>
</div>
</div>
上面的代码没有出现任何错误,它按照正确的顺序打印出与密码中的每个数字匹配的每个元素的正确文本。而且它也不会在click()行中显示任何错误。
然后,我添加了一个明确的等待。结果,从下面的代码结果看来,我可以确认这些元素是可单击的和可见的,但是未被选中。
a = dv.find_elements_by_id('campoTeclado')
index=0
lista_acceso = []
for elem in clave:
lista_acceso.append(elem)
for i in a:
texto = i.text.replace(' ou ', '')
time.sleep(2)
if lista_acceso[index] in texto:
try:
WebDriverWait(dv, 5).until(EC.element_to_be_selected((i)))
print(lista_acceso[index]+' '+texto)
time.sleep(2)
i.click()
except TimeoutException:
print("Nope!")
index +=1
此代码在每个循环中打印出TimeoutException消息。
如何选择并单击正确的元素?
答案 0 :(得分:0)
我终于解决了这一问题,将chrome窗口缩放比例更改为100%。我读过很多人对类似问题的描述。其中之一解决了此问题,方法是将缩放比例调整为100%。所以我做到了,现在代码起作用了。我讨厌这种情况...