我一直在尝试使用python中的硒包单击按钮。不过,我一直在弄不清楚如何识别按钮。经过太多时间后,我尝试从javascript控制台手动复制xpath
,但是在尝试调用NoSuchElementException
时得到driver.find_element_from_xpath('<xpath>')
。
我真的不确定这怎么可能。 HTML非常长-我最终试图定位的内容嵌套在多个表,正文,td,tr标签下。这是元素:
<a href="Javascript:void" onclick="javascript:toggleDisplay(this, trAK);return false;">Alaska</a>
当我在Chrome中单击“复制Xpath”时,它返回了以下字符串://*[@id="Form1"]/table/tbody/tr[3]/td/table/tbody/tr[1]/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[5]/td/table/tbody/tr[3]/td/table[1]/tbody/tr[1]/td[2]/a
我对此很陌生,所以谁能帮助我了解为什么这不起作用和/或我可以做些什么来解决?
答案 0 :(得分:0)
所需元素是启用了JavaScript的元素,因此要对元素click()
使用element_to_be_clickable()
,必须为LINK_TEXT
引入 WebDriverWait ,并且可以使用以下Locator Strategies:
使用WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Alaska"))).click()
:
XPATH
使用(逻辑)WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick, 'toggleDisplay') and text()='Alaska']"))).click()
(而不是绝对xpath):
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
注意:您必须添加以下导入:
{{1}}