Как нажать на изображение Селена питона - PullRequest
1 голос
/ 20 июня 2019

пытается щелкнуть тип ввода с помощью Python Selen, тип ввода вызывает файл изображения и добавлен курсор CSS: указатель на изображение, к сожалению, нельзя щелкнуть изображение или ввод

Изображение

enter image description here

Код

<input type="image" src="/images/btn_next.png">

CSS

input[type="image" i] 
{
    cursor: pointer;
}

как нажать на картинку «Следующий шаг»?

Я пытался, но показывает ошибку

driver.find_element_by_xpath('//input[@type="image"][@src="/images/btn_next.png"]').click()

Ответы [ 3 ]

0 голосов
/ 20 июня 2019

Попробуйте использовать WebdriverWait и element_to_be_clickable для нажатия на изображение.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'//input[@type="image"][@src="/images/btn_next.png"]'))).click()

Если приведенный выше код не может нажать на элемент, попробуйте с помощью javaScript executor нажать на элемент.

driver.execute_script("arguments[0].click();",driver.find_element_by_xpath('//input[@type="image"][@src="/images/btn_next.png"]'))
0 голосов
/ 07 июля 2019

Если вы запускаете Chrome, то, вероятно, может помочь перемещение физического курсора на изображение и щелчок. Существует пакет python, который перемещает физический курсор к веб-элементу selenium-move-cursor.

0 голосов
/ 20 июня 2019

Вы были близки.Чтобы click() на элементе, вам необходимо объединить атрибуты в пределах xpath , используя и , и вы можете использовать любую из следующих стратегий локатора:

  • Использование css_selector:

    driver.find_element_by_css_selector("input[src='/images/btn_next.png'][type='image']").click()
    
  • Использование xpath:

    driver.find_element_by_xpath("//input[@src='/images/btn_next.png' and @type='image']").click()
    

Но поскольку вы намереваетесь вызвать click() на элементе, в идеале вам нужно вызвать WebDriverWait для element_to_be_clickable() следующим образом:

  • Использование css_selector:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[src='/images/btn_next.png'][type='image']"))).click()
    
  • Использование xpath:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@src='/images/btn_next.png' and @type='image']"))).click()
    
  • Примечание : Выдолжны добавить следующие импортные:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...