Нажав на IMG с Selenium - PullRequest
       2

Нажав на IMG с Selenium

0 голосов
/ 05 ноября 2019

Picture of HTML code

Я довольно новичок в программировании на Python и вообще. До сих пор я пробовал:

driver.find_element_by_xpath("//img[contains(@src,'/images/excel.png')])

driver.find_element_by_css_selector("/images.excel.png")

driver.execute_script("javascript: exportExcel('')")

driver.find_element_by_xpath("//td[@class='pageControl'][img/@src='/images/excel.png']").click()

Буду признателен за любую помощь, спасибо заранее.

Обновление: Я приложил дополнительное изображение HTML-кода, который находится над кодом, изображенным в DOM на предыдущем изображении. Кажется, что iFrame не препятствует работе img

Обновление 2: я использовал pyautogui для физического перемещения мыши по указанной координате, чтобы щелкнуть значок на странице, в качестве альтернативного решения. До сих пор xpaths не смогли идентифицировать элемент.

Ответы [ 3 ]

0 голосов
/ 06 ноября 2019

Я еще не видел, чтобы вы пытались щелкнуть Javascript в своих решениях, поэтому давайте попробуем это. Это обычно мой универсальный способ щелкать по странным или забавным элементам.

image = driver.find_element_by_xpath("//img[contains(@src,'/images/excel.png')]")

driver.execute_script("arguments[0].click();", image)

Надеюсь, это немного поможет.

0 голосов
/ 06 ноября 2019

Нажмите, используя Action класс:

element = driver.find_element_by_xpath("//table//tbody//tr//td[contains(@class,'pageControl') and contains(., 'Excel')]//img[contains(@src,'/images/excel.png')]")
action = ActionChains(driver)
action.move_to_element(element).click(element).perform()

После импорта:

from selenium.webdriver import ActionChains
0 голосов
/ 05 ноября 2019

Я бы решил это, нажав на родительский элемент td. Насколько я понимаю, ваш вопрос заключается в том, что вы пытаетесь заставить функцию excelExport() срабатывать.

Использование CSS-селектора:

td_element = driver.find_element_by_css_selector('td[onclick="javascript: excelExport()"]')
td_element.click()

Само изображение можно выбрать с помощью:

image = driver.find_element_by_css_selector('img[src="/images/excel.png"]')

Не проверено (но оно может работать):

driver.execute_script("excelExport();")

При запуске driver.execute_script язык указывать не нужно, так как это будет javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...