猿问

硒铬驱动器终端和实际驱动程序之间的xpath的不同值

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

url = 'https://www.msha.gov/mine-data-retrieval-system'

driver = webdriver.Chrome(executable_path='chromedriver')

driver.get(url)

#driver.find_element_by_xpath('//*[@id="mstr90"]/div[1]/div/div') error

#driver.find_elements_by_xpath('//input') gives 3 while in driver gives 10

我无法找到输入“通过在此处键入按我的ID搜索..”的元素,文档已完全加载,但找不到它。我想做的是简单地传入输入“0100003”,然后提交


慕勒3428872
浏览 60回答 2
2回答

慕哥9229398

内联框架存在于您的页面上。在与输入框交互之前,您需要打开iframee。请参阅以下代码以解决您的问题。wait = WebDriverWait(driver, 10)driver.get("https://www.msha.gov/mine-data-retrieval-system")driver.switch_to.frame("iframe1")wait = WebDriverWait(driver, 10)inputBox = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='mstrmojo-SimpleObjectInputBox-empty']"))).click()inputBox1 = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='mstrmojo-SimpleObjectInputBox-container mstrmojo-scrollNode']//input")))inputBox1.send_keys("0100003")更新了要处理的下拉列表的代码wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#mstr100,mstrmojo-Popup.mstrmojo.SearchBoxSelector-suggest"))).click()注意:请将以下导入添加到您的解决方案中from selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait

慕盖茨4494581

您尝试查找的元素位于 iframe 内,因此您需要先切换到该 iframe,然后再执行查找元素。此外,最佳做法是在查找元素超时并引发错误之前,使用等待为页面/元素提供加载时间。iframe = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#iframe1')))driver.switch_to.frame(iframe)mine_id = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, '//*[@id="mstr90"]/div[1]/div/div')))然后,您需要单击此元素以使其可交互。mine_id.click()单击后,您需要在发送密钥之前重新找到输入框。mine_id_input = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mstr90 input')))mine_id_input.send_keys('0100003')要选择显示的建议:”suggestion = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#mstr100')))suggestion.click()如果您想在完成此操作后继续在 iframe 外部进行交互,则需要像这样切换回 iframe:driver.switch_to.default_content()
随时随地看视频慕课网APP

相关分类

Python
我要回答