使用 xpath 的复选框无法访问
Checkbox using xpath not accessible
我正在尝试访问网站 (grants.gov) 上标题为“合作协议 (968)”的复选框。 URL 是 this.
HTML 页面上似乎有两个 HTML 元素。第二个 HTML 包含在 #document
.
中
我不知道 #document
是什么意思,但我认为这是问题所在,因为,我可以得到 #document
之外的任何东西,但里面什么也没有。
这是我当前的代码:
driver.maximize_window()
driver.implicitly_wait(20)
driver.get('https://www.grants.gov/web/grants/search-grants.html')
time.sleep(3)
print('go')
cooperative_agreement = driver.find_element_by_xpath(
'/html/body/table[1]/tbody/tr/td[1]/div/div[1]/div/div/table/tbody/tr[2]/td/input')
print(cooperative_agreement.text)
我正在 chrome 上使用开发工具来获取所有内容的 XPath。如果您转到 URL 并转到 chrome 上的开发工具并尝试获取标题为“合作协议 (968)”的复选框的 XPath,您将看到我遇到的问题。
这是我在 Whosebug 上的第一个问题。如果您需要更多信息,请告诉我!谢谢大家的帮助!
你没看错,元素在 iframe 中,你需要先切换它。
诱导WebDriverWait()
等待frame_to_be_available_and_switch_to_it()
诱导WebDriverWait()
等待element_to_be_clickable()
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe#embeddedIframe")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//td[.//label[contains(., 'Cooperative Agreement')]]/input[1]"))).click()
#Jump out from iframe
driver.switch_to.default_content()
您需要导入以下库。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
我正在尝试访问网站 (grants.gov) 上标题为“合作协议 (968)”的复选框。 URL 是 this.
HTML 页面上似乎有两个 HTML 元素。第二个 HTML 包含在 #document
.
我不知道 #document
是什么意思,但我认为这是问题所在,因为,我可以得到 #document
之外的任何东西,但里面什么也没有。
这是我当前的代码:
driver.maximize_window()
driver.implicitly_wait(20)
driver.get('https://www.grants.gov/web/grants/search-grants.html')
time.sleep(3)
print('go')
cooperative_agreement = driver.find_element_by_xpath(
'/html/body/table[1]/tbody/tr/td[1]/div/div[1]/div/div/table/tbody/tr[2]/td/input')
print(cooperative_agreement.text)
我正在 chrome 上使用开发工具来获取所有内容的 XPath。如果您转到 URL 并转到 chrome 上的开发工具并尝试获取标题为“合作协议 (968)”的复选框的 XPath,您将看到我遇到的问题。
这是我在 Whosebug 上的第一个问题。如果您需要更多信息,请告诉我!谢谢大家的帮助!
你没看错,元素在 iframe 中,你需要先切换它。
诱导WebDriverWait()
等待frame_to_be_available_and_switch_to_it()
诱导WebDriverWait()
等待element_to_be_clickable()
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe#embeddedIframe")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//td[.//label[contains(., 'Cooperative Agreement')]]/input[1]"))).click()
#Jump out from iframe
driver.switch_to.default_content()
您需要导入以下库。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC