python - 在提交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 确保在运行代码本身之前先运行第一个块
解决方案
您可以使用以下 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")
推荐阅读
- java - 我可以创建堆,但数组的第一个元素保持不变
- angular - NgxMatDatetimePicker 不可分配给类型 MatDatepickerBase
- spring-cloud-stream - 使用 Spring Cloud Stream 3.0.9.RELEASE 在自定义 KafkaConsumerInterceptor 中注入的依赖项为 NULL
- angular - 具有多个条件和 Angular 9 的 RxJS iif
- javascript - 如何从 Python 加载数据并保存到 JavaScript 中的变量
- java - 在 Android 11 (API 30) 中以编程方式更改状态栏文本颜色
- python - Python - 如何将两个 pdf 页面合并为一个页面
- arrays - 将每行文本拆分为单词并将它们设置为 C 中的二维数组
- .net - Visual Studio Pro 2019 v16.8.1 中的新项目向导中缺少 .NET 5 选项
- python - pickle.dump(stats, items, outfile) TypeError: an integer is required (got type _io.BufferedWriter)