如何使用 selenium 单击此复选框

我想使用硒选择此复选框

<input type="checkbox" name="rg" onchange="onCheckReg(this)" id="beauty_perfume_screening__c" value="beauty_perfume_screening__c" tabindex="-1" aria-labelledby="check-button-Beauty Perfume Screening check-group-header">

我尝试通过 xpath 和 id 查找,但总是出现错误无法定位元素

wd.find_element_by_id("beauty_perfume_screening__c").click()

有任何想法吗?


慕森王
浏览 72回答 2
2回答

手掌心

使用xpathdriver.find_element_by_xpath("//input[@name='rg']").click()建议使用其中一种等待方法 -WebDriverWait(driver,&nbsp;10).until( &nbsp;&nbsp;&nbsp;&nbsp;EC.presence_of_element_located(By.XPATH,&nbsp;"//input[@name='rg']")用于选择 iframe -root1&nbsp;=&nbsp;driver.find_element_by_xpath("//iframe") driver.switch_to.frame(root1)

繁花不似锦

要单击带有保存文本的元素,您可以使用以下定位器策略之一:使用id:wd.find_element_by_id("beauty_perfume_screening__c").click()使用css_selector:wd.find_element_by_css_selector("input#beauty_perfume_screening__c[name='rg'][value='beauty_perfume_screening__c']").click()使用xpath:wd.find_element_by_xpath("//input[@id='beauty_perfume_screening__c' and @name='rg'][@value='beauty_perfume_screening__c']").click()理想情况下,要单击需要引发WebDriverWait 的元素element_to_be_clickable(),您可以使用以下任一定位器策略:使用ID:WebDriverWait(wd, 20).until(EC.element_to_be_clickable((By.ID, "beauty_perfume_screening__c"))).click()使用CSS_SELECTOR:WebDriverWait(wd, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#beauty_perfume_screening__c[name='rg'][value='beauty_perfume_screening__c']"))).click()使用XPATH:WebDriverWait(wd, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='beauty_perfume_screening__c' and @name='rg'][@value='beauty_perfume_screening__c']"))).click()注意:您必须添加以下导入:from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as EC重要提示:如果该元素位于 a 内,<iframe>则必须切换到<iframe>第一个元素。您可以在以下位置找到一些相关讨论:iframe下处理#document的方法通过 Selenium 和 python 切换到 iframe
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python