【问题标题】:Unable to click on a .png image link无法单击 .png 图像链接
【发布时间】:2018-05-11 05:56:37
【问题描述】:

朋友们,

我正在努力打开 Microstrategy 仪表板的特定选项卡,其中仪表板的名称采用图像形式。这是我需要单击的标题的 HTML 代码。 M 在 python 中使用 selenium web 驱动程序。 请建议:-

<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)">

我尝试了以下方法但不起作用:-

场景一:-

在这种情况下,代码在 "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()

【问题讨论】:

  • 您尝试点击的HTML代码?

标签: python selenium selenium-webdriver xpath css-selectors


【解决方案1】:

根据您共享的 HTML,AUT 可能基于 JavaScript 和/或 AjaxCalls,因此您必须诱导 WebDriverWait 并在所需的&lt;img&gt; 上调用click(),您可以使用以下任一选项:

  • 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2014-01-04
    相关资源
    最近更新 更多