Соскоб Google Play Store BeautifulSoup / Selenium - PullRequest
0 голосов
/ 10 октября 2018

Я собираю данные из Android Store (Google Play Store) и хочу автоматизировать процесс загрузки на подключенный телефон.Я пытаюсь автоматизировать нажатие кнопки «Установить» на странице приложения с помощью Selenium, но не могу нажать на нее

Вот мой код Python:

from selenium import webdriver
driver=webdriver.Safari()
driver.get("https://play.google.com/store/apps/details? 
             id=com.playdemic.golf.android")


dr_button = driver.find_element_by_xpath("//*[@id='fcxH9b']/div[4]/c-wiz/div/div[2]/div/div[1]/div/c-wiz[1]/c-wiz[1]/div/div[2]/div/div[2]/div/div[2]/div[2]/c-wiz/div/span/button")
dr_button.click()

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Проблема в том, что Google использует обфускацию элементов, чтобы предотвратить злонамеренную автоматизацию своего сайта.Используя XPATH, вы на правильном пути, но вам придется вручную создать путь XPATH ..., который в любом случае поможет упростить ваш код.Вы можете сделать что-то вроде:

dr_button = driver.find_element_by_xpath("//button[@aria-label='Install']")

РЕДАКТИРОВАТЬ: Чтобы уточнить обфускации элемента, вы можете увидеть все имена классов, а также другие атрибуты элемента являются буквенно случайной 6-символьной буквенно-цифровой строкой.Эти строки могут и будут меняться с перерывами.В большинстве случаев для поиска элементов используются мои элементы id и class es.

0 голосов
/ 10 октября 2018

РЕДАКТИРОВАТЬ

Я решил 90% проблемы с Safari, я должен был сначала войти, вот мой код.

driver = webdriver.Safari()
driver.get("https://play.google.com/store/apps/details? 
id=com.king.candycrushsaga")

connexionbutton= "//*[@id='gb_70']"
emailfield= "identifierId"
GoogleAccUser="*****@gmail.com"
GoogleAccPassword="*****"
passwordfield="//*[@id='password']/div[1]/div/div[1]/input"
nextButton = "//*[@id='identifierNext']/content/span"
nextButtonTwo = "//*[@id='passwordNext']/content/span"
appsTabW  = "//*[@id='wrapper']/div[1]/div/ul/li[2]/a/span/span[2]"
appsTab = "//*[@id='wrapper']/div[1]/div/ul/li[2]/a"
installButton = "//*[@id='fcxH9b']/div[4]/c- 
wiz/div/div[2]/div/div[1]/div/c-wiz[1]/c- 
wiz[1]/div/div[2]/div/div[2]/div/div[2]/div[2]/c-wiz/div/span/button"
confirmInstallButton = "//*[@id='purchase-ok-button']/span"
xx = "//*[@id='purchase-cancel-button']"



loginbuttonElement = WebDriverWait(driver,10).until(lambda driver: 
driver.find_element_by_xpath(xpathbutton))
loginbuttonElement.click()

emailFieldElement = WebDriverWait(driver,10).until(lambda driver: 
driver.find_element_by_id(emailfield))
emailFieldElement.clear()
emailFieldElement.send_keys(GoogleAccUser)

nextButtonElement = WebDriverWait(driver,10).until(lambda driver: 
driver.find_element_by_xpath(nextButton))
nextButtonElement.click()

passwordFieldElement = WebDriverWait(driver,10).until(lambda driver: 
driver.find_element_by_xpath(passwordfield))
passwordFieldElement.clear()
passwordFieldElement.send_keys(GoogleAccPassword)

nextButtonElementTwo = WebDriverWait(driver,10).until(lambda driver: 
driver.find_element_by_xpath(nextButtonTwo))
nextButtonElementTwo.click()

 installButtonElement = WebDriverWait(driver,10).until(lambda driver: 
 driver.find_element_by_xpath(installButton))
 installButtonElement.click()

confirmInstallButtonElement = WebDriverWait(driver,50).until(lambda 
 driver: driver.find_element_by_xpath(xx))
 confirmInstallButtonElement.click()

Теперь проблема в подтверждении установки, которое появляется во всплывающем окне, и я не могу обнаружить кнопку, чтобы нажать на нее и загрузить приложение

0 голосов
/ 10 октября 2018

Я должен войти в систему, но я могу нажать «Установить»!:) Попробуйте другой браузер?RESULT FOR:

from selenium import webdriver
driver=webdriver.Firefox()
driver.get("https://play.google.com/store/apps/details?id=com.playdemic.golf.android")


dr_button = driver.find_element_by_xpath("//*[@id='fcxH9b']/div[4]/c-wiz/div/div[2]/div/div[1]/div/c-wiz[1]/c-wiz[1]/div/div[2]/div/div[2]/div/div[2]/div[2]/c-wiz/div/span/button")
dr_button.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...