Невозможно щелкнуть ссылку изображения в формате .png - PullRequest
0 голосов
/ 11 мая 2018

Друзья

Я изо всех сил пытаюсь открыть конкретную вкладку панели мониторинга Microstrategy, в которой название панели представлено в виде изображения. Вот HTML-код заголовка, на который мне нужно нажать. M использует селен веб-драйвер в Python. Пожалуйста, предложите: -

<img src="./Images/DSI Images/NewWeb/Active_/Home.png" style="width:144px;height:48px;" onclick="mstrmojo.dom.captureDomEvent('*lK36*kK258*x1*t1526016913721','click', self, event)">

Я пробовал следующие способы, но не работает: -

Сценарий 1: -

В этом сценарии код доходит до "print("wait over")", но сообщается, что он не работает

print("waiting...")
sleep(15)
print("wait over")
home_element = driver.find_element_by_xpath("//*[@id='*lK36*kK258*x1*t1525928239926']/div")
home_element.click()

Сценарий 2: -

driver.execute_script("document.getElementById('*lK36*kK258*x1*t1525928239926').getElementsByTagName('img')[0].click()")

Сценарий 3: -

WebDriverWait(driver,10).until(driver.find_element_by_xpath("//img[contains(@src,'DSI Images/NewWeb/Active_/Home')]").element_to_be_clickable)

Сценарий 4: -

shared_reports_button = driver.find_element(By.XPATH("//img[@src='./Images/DSI Images/NewWeb/Active_/Home.png']"))
shared_reports_button.click()

Сценарий 5: -

driver.find_elements_by_link_text('./Images/DSI Images/NewWeb/Inactive_/Home.png').click()

Сценарий 6: -

driver.find_element_by_css_selector("a[href='./Images/DSI Images/NewWeb/Inactive_/Home.png')."])).click(); 

Сценарий 7: -

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='mstrmojo-DocImage hasLink']/img src[@class='./Images/DSI Images/NewWeb/Active_/Home.png']"))).click()

1 Ответ

0 голосов
/ 11 мая 2018

В соответствии с HTML, которым вы поделились, возможно, AUT основан на JavaScript и / или AjaxCalls , поэтому вам нужно вызвать WebDriverWait и для вызова click() на желаемом <img> вы можете использовать любую из следующих опций:

  • CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "img[href*=Images/NewWeb/Active_/Home.png]"))).click()
    
  • XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//img[contains(@href,'Images/NewWeb/Active_/Home.png')]"))).click()
    
  • XPATH (абсолютный атрибут):

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//img[@href=\"./Images/DSI Images/NewWeb/Active_/Home.png\"]"))).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, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...