Как найти окно / iframe из Chrome DevTools

#python #selenium #iframe #beautifulsoup

#python #selenium #iframe #beautifulsoup

Вопрос:

Я пытаюсь выполнить веб-очистку, используя Selenium, Python и Beautiful Soup. Я очищаю эту страницу, но я хочу удалить информацию из всплывающего окна, которое появляется, когда вы нажимаете на значки «i» (информация) в углу каждого продукта. Мой код выглядит следующим образом:

 import requests 
from bs4 import BeautifulSoup
import time
import selenium
import math 
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import chromedriver_binary
import re 
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(ChromeDriverManager().install())

r = requests.get('https://dmarket.com/csgo-skins/product-card/ak-47-redline/field-tested')
driver.get('https://dmarket.com/csgo-skins/product-card/ak-47-redline/field-tested')
html_getter = BeautifulSoup(r.text, "html.parser")
data = html_getter.findAll(attrs={"class":"c-asset__priceNumber"})
dataskin = html_getter.findAll(attrs={"class" : "c-asset__exterior"})
time.sleep(2)
driver.find_element_by_id("onesignal-slidedown-cancel-button").click()
time.sleep(2)
driver.find_element_by_class_name("c-dialogHeader__close").click()
time.sleep(30)
driver.find_element_by_class_name("c-asset__action--info").click()
time.sleep(30)
price_element =  driver.switch_to.active_element
print("<<<<<TEXT>>>>>")
print(price_element.text)
print("<<<<<END>>>>>")
driver.close()
  

Однако, когда я запускаю это, печатается только текст «закрыть». Если вы проверите всплывающее окно информационной страницы, оно должно распечатать цену, данные из графика и т.д. Как я могу заставить его распечатать эту информацию? В частности, я хочу, чтобы сумма, проданная за самый последний день, и цена, указанная на графике за самый последний день (оба, похоже, доступны в Chrome DevTools). Я не думаю, что я смотрю не на тот фрейм, поскольку я переключаюсь на активный фрейм, поэтому я не уверен, как это исправить!

Комментарии:

1. На какой строке вы застряли? Какую ошибку вы видите?

2. в настоящее время единственное, что печатает price_element.text, это «закрыть», в то время как я хочу, чтобы он также печатал цену и объем. Я просто не понимаю, почему они не печатаются. Фактическая ошибка не выдается.

3. Спасибо! Я проверю это!

4. @arundeepchohan на самом деле он все еще ничего не печатает. Я все еще не получаю текст. Я использую driver.get_element_by_xpath(«//*[@id=’itemsDetails’]/div[1]/div[2]/asset-card-price[1]/div/div/span/dm-currency-icon» ) и затем я попробовал .text и .get_attribute («innerHTML»)