0

On the mentioned website, After searching for the token, a slider captcha appears.

An example of the captcha: enter image description here

I want to bypass the slider captcha. I took reference from the first solution in Unable to let my script slide a button to the right

My approach would be to slowly move until the slider is in the right place and after that, the new page opens.

The website is: https://www.ems.com.cn/english/

My approach:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium.webdriver import ActionChains

driver = webdriver.Chrome(ChromeDriverManager().install())
actions = ActionChains(driver)

url = 'https://www.ems.com.cn/english/'

driver.get(url)

token = 'CY008445045CN'

token_space = driver.find_element_by_xpath("//input[@class='el-input__inner']")

token_space.send_keys(token)
driver.find_element_by_xpath("//i[@class='el-icon-search']").click()
time.sleep(4)

slider_container = driver.find_element_by_xpath("//div[@class='slide-verify-slider']")
slider = driver.find_element_by_xpath("//div[@class='slide-verify-slider-mask-item']")

# Perform sliding action
actions.move_to_element(slider).click_and_hold().move_by_offset(slider_container.size['width'], 0).release().perform()
Atom Store
  • 961
  • 1
  • 11
  • 35

1 Answers1

-1
find_element_by_xpath

is deprecated, you should use:

find_element(By.XPATH, value="")

Here is updated version of your code:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
actions = ActionChains(driver)

url = 'https://www.ems.com.cn/english/'

driver.get(url)

token = 'CY008445045CN'

token_space = driver.find_element(By.XPATH, value="//input[@class='el-input__inner']")

token_space.send_keys(token)
driver.find_element(By.XPATH, value="//i[@class='el-icon-search']").click()
time.sleep(8)

slider_container = driver.find_element(By.XPATH,value="//div[@class='slide-verify-slider']")
slider = driver.find_element(By.XPATH, value="//div[@class='slide-verify-slider-mask-item']")

# Perform sliding action
for x in range(10000):
    
    actions.move_to_element(slider).click_and_hold().move_by_offset(x, 0).release().perform()
    time.sleep(0.1)

To resolve captcha you must release button in correct place, not just slide.

Much better way to get data is to use REST API

REST API

Max
  • 245
  • 3
  • 10