如何通过 Selenium 和 Python 在 table 中点击 onclick 事件
How to click through onclick event with in a table through Selenium and Python
我正在自动化一个功能,用户需要点击下面 link 中突出显示的 link。
HTML
我在 xpath 上尝试了一个包含 //*[@id="lc"]
,以及一个来自 的 onclick 选项,这两个选项都不起作用,并且元素不存在错误。
我知道我在正确的 iframe 中,因为当使用不包含脚本的 xpath 时,脚本点击第一个 xpath link 没有问题。
我没有在 Python 中使用 Selenium,但在 java 中使用过,在 Java 中你必须使用单引号 (') 而不是双引号 (") ,或者您可以只使用不带任何引号的更简单的定位器 id=lc,如果您确定 ID 正确,这应该可以工作。
我已经在 java 中完成了,希望您能找到答案
是的,在静态或动态 tables 中,id 将相同,但如果您尝试使用绝对 xpath
这是 table 元素的两个绝对路径,彼此位于第一行
/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]
这是相同元素的相对 xpath
//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')]
Table
To click()
在所需元素上,因为该元素是 dynamic 元素,您必须为 WebDriverWait =25=]元素可点击,您可以使用以下任一项:
使用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
我正在自动化一个功能,用户需要点击下面 link 中突出显示的 link。
HTML
我在 xpath 上尝试了一个包含 //*[@id="lc"]
,以及一个来自
我知道我在正确的 iframe 中,因为当使用不包含脚本的 xpath 时,脚本点击第一个 xpath link 没有问题。
我没有在 Python 中使用 Selenium,但在 java 中使用过,在 Java 中你必须使用单引号 (') 而不是双引号 (") ,或者您可以只使用不带任何引号的更简单的定位器 id=lc,如果您确定 ID 正确,这应该可以工作。
我已经在 java 中完成了,希望您能找到答案 是的,在静态或动态 tables 中,id 将相同,但如果您尝试使用绝对 xpath 这是 table 元素的两个绝对路径,彼此位于第一行
/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]
这是相同元素的相对 xpath
//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')]
Table
To click()
在所需元素上,因为该元素是 dynamic 元素,您必须为 WebDriverWait =25=]元素可点击,您可以使用以下任一项
使用
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