为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕勒3428872 2022-09-27 10:38:00
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECurl = '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”,然后提交
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

内联框架存在于您的页面上。在与输入框交互之前,您需要打开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 EC

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait


查看完整回答
反对 回复 2022-09-27
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您尝试查找的元素位于 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()


查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信