无法使用Selenium Webdri定位并单击元素

2024-09-26 18:20:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试自动下载过程,但我找不到需要单击的元素。元素没有ID,并且嵌入在tableau表中。我试过xPath,但没用。你知道吗

这是我试图点击的元素的html代码-

image xlink:href="somerandomlink" class="tab-button-zone-image" width="30" height="9"></image

该元素还有一个outerwidget代码,在该代码下可以找到我要单击的实际元素的上述代码-

<div class="tab-zone tab-widget tabSuppressVizTooltipsAndOverlays tabZone-dashboard-object fade-bg" id="tabZoneId26" style="z-index: 35; width: 30px; height: 22px; top: 78px; left: 1315px;">

我一直使用的代码是:

elem1= driver.find_element_by_id('tabZoneId26')
elem1.click()

以及

elem= driver.find_element_by_id('//*[@id="tabZoneId26"]/div/div/div/div/div/div/svg/image')
elem.click()

两个都没用。恐怕无法共享该页的链接。你知道吗

任何帮助将不胜感激,停留在这一段时间了。谢谢。你知道吗


Tags: 代码imagedividzone元素driverelement
2条回答
elem1= driver.find_element_by_xpath('//div[@id="tabZoneId26"]//image')
elem1.click()

或者

from selenium.webdriver.common.action_chains import ActionChains

elem1 = driver.find_element_by_xpath('//div[@id="tabZoneId26"]//image')
actions = ActionChains(driver)
actions.click(elem1).perform()

您对xpath使用了错误的方法按\u id查找\u元素。右边是通过xpath查找元素

driver.find_element_by_xpath('//*[@id="tabZoneId26"]/div/div/div/div/div/div/svg/image')

而且您的xpath是不可信的:尝试像xpath那样做得更好

driver.find_element_by_xpath('//div[contains(@id,"tabZoneId2")]//svg/image[@class="tab-button-zone-image"]')

在单击web元素之前,还要确保它在DOM中。例如

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By

timeout = 5
wait = WebDriverWait(browser, timeout, poll_frequency=1)
wait.until(
  method=ec.presence_of_element_located((By.XPATH, "YOUR XPATH")))

相关问题 更多 >

    热门问题