Skip to content
Advertisement

Selenium / More-Element clicking not possible allways?

I try to click on the more element on these pages – with the following code

for the following link this works fine with finding element per xpath:

import os, sys, time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from sys import platform 

WAIT = 1

link = "https://apps.apple.com/us/app/daily-budget-original/id651896614?uo=4"
path = os.path.abspath (os.path.dirname (sys.argv[0])) 
if platform == "win32": cd = '/chromedriver.exe'
elif platform == "linux": cd = '/chromedriver'
elif platform == "darwin": cd = '/chromedriver' 

options = Options()
options.add_argument("--window-size=1920x1080")
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')   
options.add_experimental_option ('excludeSwitches', ['enable-logging'])      
# options.add_argument('--headless')

driver = webdriver.Chrome (path + cd, options=options)
driver.get (link)  # Read link
time.sleep (WAIT)  # Wait till the full site is loaded
driver.find_element_by_xpath('//*[@id="ember-app"]/div/main/div[2]/section[7]/div[1]/dl/div[9]/dd/ol/div/button').click()

But when i try the same code with another link / app like https://apps.apple.com/us/app/contacts-backup-pro-restore/id1120943403?uo=4 the more-element is not opening anymore

I saw that the xpath is slightly different so i tried it with

driver.find_element_by_xpath('//*[@id="ember-app"]/div/main/div[2]/section[9]/div[1]/dl/div[9]/dd/ol/div/button').click()

but this isn´t working

then i tried it with class-selector instead with

driver.findElement(By.cssSelector("button[class='we-truncate__button we-truncate__button--top-offset link']")).click()

but this isn´t working for both links now…

Is there anyway to get both links running – in the best case with css-selectors?

Advertisement

Answer

Yes you can use the below xpath :

//dt[text()='In-App Purchases']/following-sibling::dd/descendant::button

this should click on more on the both pages.

Xpath is basically looking for In-App Purchases and then the following button which is part of it, so you can use on any app store web page

and you can click it like this :

wait = WebDriverWait(driver, 10)
in_app_more_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//dt[text()='In-App Purchases']/following-sibling::dd/descendant::button")))
in_app_more_button.click()

Imports :

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement