如何通过Selenium和Python在表中单击onclick事件



我正在自动化一个功能,用户需要单击以下链接中突出显示的链接。

.HTML

我尝试在 xpath 上包含一个包含,这是//*[@id="lc"],以及来自这里的 onclick 选项,这两个选项都不起作用,元素的错误不存在错误。

我知道我在正确的 iframe 中,因为当使用不包含的 xpath 时,脚本单击第一个 xpath 链接没有问题。

click()所需的元素,因为该元素是动态元素,您必须诱导 WebDriverWait元素可单击,并且您可以使用以下任一定位器策略:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td.EMROtherEpsEven>table tr>td.EMROtherEpsEven#lc[onclick*='Hemoglobin']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@class='EMROtherEpsEven']/table//tr/td[@class='EMROtherEpsEven' and @id='lc'][contains(@onclick, 'Hemoglobin')]"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
我没有在

Python 中使用 Selenium,但我在 Java 中使用过,在 Java 中你必须使用简单的引号 (') 而不是双引号 ("),或者你可以只是一个更简单的定位器 id=lc 没有任何引号,如果你确定 ID 是正确的,这应该可以工作。

我已经在 Java 中完成了此操作,希望您找到答案 是的,在静态或动态表中,ID 将是相同的,但如果您尝试使用绝对 XPaAth,则 这是表元素的两个绝对路径,彼此驻留在第一行

/html[1]/body[1]/section[1]/section[1]/div[1]/data[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]
/html[1]/body[1]/section[1]/section[1]/div[1]/data[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]

这是相同元素的相对路径

//a[contains(text(),'AF17OT41603')]
//div[@id='1547533504703-0-uiGrid-000C-cell']//div[@class='ui-grid-cell-contents ng-binding ng-scope'][contains(text(),'AKSHAY PATIL')]

桌子

最新更新