我试图让 WebDriver 将鼠标悬停在表格行上,以显示“删除”链接。每一行都包含一个隐藏输入,其中项目名称作为值,并且由于项目名称将被编写测试的人知道(但它出现的特定行不会)我试图使用项目名称来定位该行。
我的基本计划是定位输入,然后寻找它的祖先。
我已经尝试过使用 Xpath 和 CSS,虽然我可以接近(我可以获得输入),但我似乎无法回到元素。由于输入是隐藏的,我不能简单地将鼠标悬停在它上面。
这是我所拥有的:
def delete_row_by_item_or_task_name(self, item_name=None, task_name=None):
try:
if item_name:
name = item_name
table_id = 'invoice-items'
if task_name:
name = task_name
table_id = 'invoice-time'
# tr = self.driver.find_element_by_css_selector("#" + table_id + " input[value=" + name + "]")
tr = self.driver.find_element_by_xpath("//*[@id='" + table_id + "']/tbody/tr/td/div/div/input[contains(.,'" + name + "')]")
import pdb; pdb.set_trace()
self.hover(tr)
self.driver.find_element_by_link_text('Delete line').click()
如果我放入一个 pdb 并检查变量 'td' 是一个 web 元素,CSS 选择器就可以工作。但正如我提到的,我不能将鼠标悬停在隐藏的输入上并尝试添加 /ancestor::tr 会导致异常 (WebDriverException)。
Xpath 导致 NoSuchElement 异常,有或没有 /ancestor::tr
如果缺少任何需要的信息,请告诉我,我很乐意提供更多详细信息。