Как очистить элемент JSON с помощью селена? - PullRequest
0 голосов
/ 02 июня 2019

Мне нужно очистить данные от элемента json. При нажатии на элемент открывается всплывающее окно, которое содержит данные, которые мне нужны.

Я пытался нажать на элемент с помощью селена, но он возвращает None.

driver.find_element_by_link_text('View details').click()

URL - https://play.google.com/store/apps/details?id=in.amazon.mShop.android.shopping

Желаемый вывод - (Это приложение имеет доступ к: Место хранения изменить или удалить содержимое вашего USB-накопителя прочитайте содержимое вашего USB-накопителя контакты читать ваши контакты найти аккаунты на устройстве Микрофон запись аудио смс читать ваши текстовые сообщения (SMS или MMS) получать текстовые сообщения (SMS) отправлять смс сообщения Фотографии / СМИ / файлы изменить или удалить содержимое вашего USB-накопителя прочитайте содержимое вашего USB-накопителя камера снимать фотографии и видео Телефон читать статус телефона и личность тождественность добавить или удалить учетные записи найти аккаунты на устройстве Информация о подключении к Wi-Fi просматривать Wi-Fi соединения Место нахождения точное местоположение (на основе GPS и сети) приблизительное местоположение (на основе сети) Идентификатор устройства и информация о вызове читать статус телефона и личность Другой прочитайте домашние настройки и ярлыки получать данные из интернета предотвратить устройство от сна просмотреть сетевые подключения контрольный фонарик использовать учетные записи на устройстве установить ярлыки создавать учетные записи и устанавливать пароли подключиться и отключиться от Wi-Fi полный доступ к сети контролировать вибрацию запустить при запуске)

Это элемент json

This is the json element

Содержит необходимый текст This contains the required text

1 Ответ

0 голосов
/ 03 июня 2019

Ваше заявление None ничего не говорит нам без контекста, то есть фрагмент кода, который переходит на страницу и щелкает ссылку. Ошибка может жить в любом месте.

Несколько подсказок:

  1. Всегда используйте Явные ожидания , чтобы дождаться появления элемента, например:

    driver.get("https://play.google.com/store/apps/details?id=in.amazon.mShop.android.shopping")
    
    WebDriverWait(driver,10).until(EC.presence_of_element_located((By.LINK_TEXT, "View details")))
    driver.find_element_by_link_text('View details').click()
    
    WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH, "//div[contains(text(),'This app has access to')]")))
    permissions = driver.find_element_by_xpath("//div[contains(text(),'This app has access to')]/parent::*")    
    

    Дополнительная информация: Как использовать Selenium для тестирования веб-приложений с использованием технологии AJAX

  2. Чтобы получить текст HTML-элемента, вы можете использовать innerText DOM object свойство, используя get_attribute function like:

    text = permissions.get_attribute("innerText")
    
  3. Вот и все, вы должны получить желаемый текст в качестве переменной:

    enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...