首页 > 解决方案 > 在提交python Selenium时从模态中提取信息

问题描述

我试图在项目登顶时从 div 中提取信息这是该站点 https://url/en/mybill/

在此处输入图像描述

当您单击检查我的账单时,模式会打开,一旦您插入一个数字,就会在生成的 div 中输出一些文本,称为formstatus 在此处输入图像描述

我想提取该 div 内的文本,但无法做到这一点,这是我迄今为止的代码

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
wd = webdriver.Chrome('chromedriver',chrome_options=chrome_options)
wd.get("https://waterauthority.com.fj/en/mybill/")
meter_id = wd.find_element_by_id("colour")
meter_id.send_keys('123') 
wd.find_element_by_name("colour").send_keys(Keys.RETURN)
delay = 10
try:
  myElem = WebDriverWait(wd, delay).until(EC.visibility_of_element_located((By.ID, 'formstatus')))  
  print(myElem)
except TimeoutException:
  print ("No work")

我不断得到输出,因为no work 任何帮助将不胜感激请注意我对这个库很陌生

在线运行代码-

https://colab.research.google.com/drive/1FZ52_8DMRsQv2iseJlsQoHiXA97jLh2v?usp=sharing 确保在运行代码本身之前先运行第一个块

标签: pythonseleniumweb-scraping

解决方案


您可以使用以下 CSS 选择器:

div[id='formstatus']

代码 :

try:
  myElem = WebDriverWait(wd, delay).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[id='formstatus']")))  
  print(myElem.text)
except TimeoutException:
  print ("No work")

更新 1:

driver.maximize_window()
driver.get("https://waterauthority.com.fj/en/mybill/")
wait = WebDriverWait(driver, 10)
try:
    wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@aria-label='close']//*[local-name()='svg']"))).click()
    print("found and clicked")
except:
    pass

wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Check My Bill')]"))).click()
meter_id = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[id='colour']")))
meter_id.send_keys('123')
wait.until(EC.element_to_be_clickable((By.ID, "save"))).click()
delay = 10
try:
  myElem = WebDriverWait(driver, delay).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[id='formstatus']")))
  print(myElem.text)
except TimeoutException:
  print ("No work")

推荐阅读