使用Selenium,我试图在网页上找到以下复选框。
<input type="checkbox" value="1" onclick=" document.getElementById('lastCheminClicked').value='123'; createInputsBinaireCell(25,'colonne5',1,0789,1,1,0,this.checked, this);">
与众不同的部分是“ onclick”中的“ 123”值,这就是硒所要寻找的。 p>
有什么方法可以在页面上找到它吗?我尝试了xpath,但没有成功。
答案 0 :(得分:0)
您可以尝试查找所有输入标签,然后依次遍历onclick属性进行遍历。例如:
from selenium.webdriver.common.by import By
input_tags = driver.find_elements(By.TAG_NAME, 'input')
found_tag = None
for input_tag in input_tags:
onclick_attribute = input_tag.get_attribute('onclick')
if ".value='123'" in onclick_attribute:
found_tag = input_tag
break
您可能需要在get_attribute
调用周围进行异常处理。
答案 1 :(得分:0)
正如您提到的,部分值 123 在onclick
事件中是不同的,因此要查找元素,可以使用以下Locator Strategies中的任意一个:
使用CSS_SELECTOR
:
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='checkbox'][onclick*='123']")))
使用XPATH
:
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='checkbox' and contains(@onclick,'123')]")))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
答案 2 :(得分:0)
XPath selectors允许使用contains()函数,该函数可用于DOM元素的属性或文本值的部分匹配。
相关的选择器如下所示:
//input[contains(@onlclick, '123')]
演示:
更多信息: