【发布时间】:2018-07-06 09:29:14
【问题描述】:
我有一个链接需要点击:
<a id="selectLink">...</a>
我是这样做的:
WebDriverWait(browser, timeout).until(EC.element_to_be_clickable((By.ID, "selectLink")))
但由于某种原因,链接没有点击,或者它点击了,但没有任何反应。当我手动执行此操作时,它可以工作。 我什至尝试将它放在一个循环中并单击它直到发生某些事情,但是它有时会起作用,有时却不起作用:
while True:
try:
WebDriverWait(browser, timeout).until(EC.element_to_be_clickable((By.ID, "selectLink"))).click()
except Exception:
break
我不知道是什么问题。
例如:
while True:
try:
WebDriverWait(browser, timeout).until(EC.element_to_be_clickable((By.ID, "selectLink"))).click()
print(len(browser.find_elements_by_id("selectLink")))
print('click')
except Exception:
print(len(browser.find_elements_by_id("selectLink")))
print('break')
break
它给了我:
1
click
1
click
1
break
仍然没有任何反应。我的问题是,即使链接仍然可以访问,为什么循环会中断,因为长度仍然是 1?
【问题讨论】:
-
检查
print(len(browser.find_elements_by_id("selectLink")))是否返回1 -
我在 try 和
print('break')中添加了print('click')和长度,在期望中添加了它给我的长度:click 1 break 1 -
所以即使它找到了它断开的链接
-
您可以在except块中再次点击该元素,以便selenium在发生异常时再尝试一次。然后你可以打破循环。参考 - stackoverflow.com/a/51017297/7352883
-
...,你能分享一下这些...点里面的内容吗,我的意思是文字
标签: python selenium selenium-webdriver xpath css-selectors