Python Selenium:如何在<;td>;标记,然后单击它的Javascript链接';她的兄弟姐妹?

Python Selenium:如何在<;td>;标记,然后单击它的Javascript链接';她的兄弟姐妹?,python,html,selenium,Python,Html,Selenium,我有一个需要逐个编辑的表单列表,其中我必须首先确定表单标题,然后单击JavaScript链接打开它的编辑模板 在下面的示例代码中,我需要识别文本另一个自定义表单(移动),它是表单标题,然后单击a href链接,其onclick值为editProjectFormType。它是表单标题的第二个兄弟。我正在尝试用Python执行此任务 !!!!!!!!!!!!!!!!!!!!!!!!!!!!阿什胡测试!!!!!!!!!! 自定义表格 ACFM 另一个自定义表单(移动) 习俗 我将通过以下方式实现这

我有一个需要逐个编辑的表单列表,其中我必须首先确定表单标题,然后单击JavaScript链接打开它的编辑模板

在下面的示例代码中,我需要识别文本
另一个自定义表单(移动)
,它是表单标题,然后单击
a href
链接,其
onclick
值为
editProjectFormType
。它是表单标题的第二个兄弟。我正在尝试用Python执行此任务


!!!!!!!!!!!!!!!!!!!!!!!!!!!!阿什胡测试!!!!!!!!!!
自定义表格
ACFM
另一个自定义表单(移动)
习俗

我将通过以下方式实现这一点:

  • 创建一个类来表示该表中的一行,比如说“MyRow”,它有一个方法可以将每一列作为类中的字段进行交互
  • 使用Selenium查找表中的所有行,返回此类实例的列表
  • 循环浏览列表,查找与目标名称匹配的行:
  • 对于(MyRow MyRow:allRows){ if(myRow.name.equals(“另一个自定义表单(移动)”)){ 返回myRow; } }
  • 单击目标行列中的链接<代码>myRow.editProjectForm()

您可以使用以下单个
xPath执行单击
链接
,您可以提供文本
另一个自定义表单(移动)
,以识别他们的
以下兄弟姐妹
,并获得该
链接
,如下所示:-

link = browser.find_element_by_xpath("//td[contains(text(),'Another Custom Form (Mobile)')]/following-sibling::td/a[contains(@onclick, 'editProjectFormType')]")
link.click()
link = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.XPATH, "//td[contains(text(),'Another Custom Form (Mobile)')]/following-sibling::td/a[contains(@onclick, 'editProjectFormType')]"))) 
link.click()
已编辑..

执行
WebDriverWait
以获取
元素
,如下所示:-

link = browser.find_element_by_xpath("//td[contains(text(),'Another Custom Form (Mobile)')]/following-sibling::td/a[contains(@onclick, 'editProjectFormType')]")
link.click()
link = WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.XPATH, "//td[contains(text(),'Another Custom Form (Mobile)')]/following-sibling::td/a[contains(@onclick, 'editProjectFormType')]"))) 
link.click()
注意:-如果目标
元素
位于
框架内
。您需要首先切换到该
作为
浏览器。切换到\u帧(“帧名称或id”)
然后如上所述查找目标
元素


希望它能帮助你……:)

第一个对我有用,但做了一些修改。 我在单个td中有3个按钮,其他4个td有文本。我必须根据一个td值(例如客户名称)点击特定按钮。下面是工作代码

self.driver.find_element_by_xpath(
"//td[contains(text(),'" + customer_name + "')]/following-sibling::td/button[text()='Accept']"
).click()

如果您想用Python执行测试,为什么要用jQuery标记它呢?我的错误是,我对这个站点和代码都是新手。jQuery是作为一个建议而来的,所以我对它进行了标记。请分享您的代码,以及您为此尝试过的代码……为什么不使用
onclick=“editProjectFormType('2192454$$rmymiK');”找到一个锚定标记呢
属性并单击它?@Andersson,因为我在不同的项目中有多个表单要编辑,而向我提供这些表单列表的人只有表单名称(如本例中的“另一个自定义表单(移动)”)。谢谢Saurabh,但这会引发一个错误,这可能是因为该链接是
Custom
之后的第二个同级链接吗?无论是第二个还是第三个……它只扫描以下所有同级链接……
selenium.common.exceptions.NoSuchElementException:Message:无法定位元素:{“方法”:“xpath”,“选择器”:”//td[包含(文本(),“另一个自定义表单(移动)”)/以下同级::td/a[contains(@onclick,'editProjectFormType')]“}
现在它说
NameError:name'EC'没有从selenium.webdriver.support中定义
。导入预期条件为EC
导入如下..感谢编辑帮助@akmozo。我不知道该怎么做。谢谢你,你的解决方案更有条理。