1

On the website https://www.aliexpress.com, I need to change the country from the dropdown menu using selenium

<span class="ship-to">

I can't find how I click on the country value using selenium

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
Ravanelli
  • 95
  • 1
  • 6

3 Answers3

2

From the Ship to to select the country as Afghanistan you have to induce WebDriverWait for the element_to_be_clickable() and you can use the following based Locator Strategies:

  • Code Block:

    driver.get("https://www.aliexpress.com/")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@class, 'switcher-info')]/span[@class='ship-to']/i"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='address-select-trigger']//span[@class='css_flag css_in']//span[@class='shipping-text']"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='address-select-item ']//span[@class='shipping-text' and text()='Afghanistan']"))).click()
    
  • Note : You have to add the following imports:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • Browser Snapshot:

aliexpress_afghanistan

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
0

you can use ActionChains. Element is your xpath

from selenium.webdriver import ActionChains
actions = ActionChains(browser)
actions.move_to_element(element).perform()
actions.click().perform()

You can read more about ActionChains here https://www.selenium.dev/selenium/docs/api/py/webdriver/selenium.webdriver.common.action_chains.html

or you can use click() function example:

country_button = browser.find_element_by_class_name('ship-to')
country_button.click()
DD_N0p
  • 229
  • 1
  • 2
  • 6
0
    import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.List;

public class aliexpress {

    public static void main(String[] args) throws Exception {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\User\\Downloads\\chromedriver83\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();


        driver.manage().window().maximize();
        driver.get("https://www.aliexpress.com/");
        driver.findElement(By.xpath("//span[@class='ship-to']")).click();
        driver.findElement(By.xpath("//div[@id='nav-global']/div[4]/div/div/div/div/div/a")).click();

        List <WebElement> lists=driver.findElements(By.xpath("//ul[@data-role='content']//li"));
        System.out.println(lists.size());

        for (int i = 0; i < lists.size(); i++) {
            //System.out.println(LIST.get(i).getText());
            if (lists.get(i).getText().contains("Barbados")) {
                lists.get(i).click();
                break;
            }


        }
    }
}
Justin Lambert
  • 940
  • 1
  • 7
  • 13