How can I operate the browser slider verification code in Selenium-Driverless like in Playwright
Closed this issue · 3 comments
wang0916 commented
`
in Selenium-Driverless
bg_element = await driver.find_element(By.XPATH, '//div[@class="kc-content"]/div[@class="kc-bg"]/img',
timeout=10)
bg_src = await bg_element.get_attribute(name='src')
print(f"bg Image src: {bg_src}")
fg_element = await driver.find_element(By.XPATH, '//div[@class="kc-content"]/div[@class="kc-fg"]/img')
fg_src = await fg_element.get_attribute(name='src')
print(f"bg Image src: {fg_src}")
distance = await get_distance(bg_src, fg_src)
print(distance)
tracks = get_tracks(distance)
print(tracks)
move_btn = await driver.find_element(By.XPATH, '//div[@class="kc-move-btn"]')
move_btn_box = await move_btn.location
x = move_btn_box['x']
pointer = driver.current_pointer
await pointer.down(move_btn_box)
for track in tracks:
await pointer.move_to(x + track, round(random.uniform(1.0, 4.0), 0), total_time=2)
x += track
await pointer.up()
#in playwright
bg_element = page.locator('//div[@class="kc-content"]/div[@class="kc-bg"]/img')
bg_img_url = await bg_element.get_attribute('src')
fg_element = page.locator('//div[@class="kc-content"]/div[@class="kc-fg"]/img')
fg_img_url = await fg_element.get_attribute('src')
distance = await get_distance(bg_img_url, fg_img_url)
tracks = get_tracks(distance)
move_btn = await page.query_selector('//div[@class="kc-move-btn"]')
move_btn_box = await move_btn.bounding_box()
move_btn_center = {
'x': move_btn_box['x'] + move_btn_box['width'] / 2,
'y': move_btn_box['y'] + move_btn_box['height'] / 2
}
await page.mouse.move(move_btn_center['x'], move_btn_center['y'])
await page.mouse.down()
x = move_btn_center['x']
for track in tracks:
await page.mouse.move(x + track, round(random.uniform(1.0, 4.0), 0), steps=3)
x += track
await page.mouse.up()
`
kaliiiiiiiiii commented
don't ask quesions in an issue
kaliiiiiiiiii commented
Also, you've got parts which are missing in the code (def get_tracks(distance):
for example)
I can't help you further with it therefore
wang0916 commented
另外,你的代码中缺少一些部分(
def get_tracks(distance):
例如) 我无法进一步帮助你,因此
distance is the length of the sliding x-axis