Python 3.x Selenium:无法定位元素
所以我试图识别这个按钮来按下它,但我得到了一个例外: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素 下图显示了该按钮: 奇怪的是,我已经在登录页面中识别了登录按钮,但是在我进入下一个页面之后,识别一个元素就不可能了,这可能是因为页面不允许这样做吗Python 3.x Selenium:无法定位元素,python-3.x,selenium,Python 3.x,Selenium,所以我试图识别这个按钮来按下它,但我得到了一个例外: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素 下图显示了该按钮: 奇怪的是,我已经在登录页面中识别了登录按钮,但是在我进入下一个页面之后,识别一个元素就不可能了,这可能是因为页面不允许这样做吗 #This one works driver.find_element_by_class_name("urBtnStdNew").click() #This o
#This one works
driver.find_element_by_class_name("urBtnStdNew").click()
#This one give the exception
driver.find_element_by_id("sapbi_snippet_TABSTRIP_CONTAINER_ITEM_1").click()
#This is the HTML of that element
<span class="urTbsTxtOff">DPD Trend</span></td>
使用
WebDriverWait
并遵循xpath
单击DPD趋势
选项卡
from selenium import webdriver
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, "//td[@class='urTbsLabelOff urBorderBox']/span[@class='urTbsTxtOff'][contains(.,'DPD Trend')]"))).click()
使用
WebDriverWait
并遵循xpath
单击DPD趋势
选项卡
from selenium import webdriver
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, "//td[@class='urTbsLabelOff urBorderBox']/span[@class='urTbsTxtOff'][contains(.,'DPD Trend')]"))).click()
哈姆扎,
WebDriverWait
将无法工作。正如您所说的,您已经尝试使用Thread.sleep()和WebDriver仍然找不到该元素
在我看来,问题似乎是由于使用了不正确的元素定位器
如果屏幕截图中的按钮是红色框中的按钮,并且元素检查器中红色框中的代码与之相关,那么在我看来,ID应该是TABSTRIP\u CONTAINER\u ITEM\u 1\u TABSTRIP\u TABSTRIP-itm-5
。
因此,根据上面的示例,以下代码应该找到DPD趋势按钮并单击它:
driver.find_element_by_id("TABSTRIP_CONTAINER_ITEM_1_tabStrip_tabstrip-itm-5").click()
哈姆扎,
WebDriverWait
将无法工作。正如您所说的,您已经尝试使用Thread.sleep()和WebDriver仍然找不到该元素
在我看来,问题似乎是由于使用了不正确的元素定位器
如果屏幕截图中的按钮是红色框中的按钮,并且元素检查器中红色框中的代码与之相关,那么在我看来,ID应该是TABSTRIP\u CONTAINER\u ITEM\u 1\u TABSTRIP\u TABSTRIP-itm-5
。
因此,根据上面的示例,以下代码应该找到DPD趋势按钮并单击它:
driver.find_element_by_id("TABSTRIP_CONTAINER_ITEM_1_tabStrip_tabstrip-itm-5").click()
正确的XPath定位器将非常简单:
//span[text()='DPD Trend']
如果仍无法找到该图元,请执行以下操作:
- 再次检查它是否在,如果是-您需要在找到之前
- 再次检查它是否未隐藏在中,如果是,则需要定位通孔并将结果强制转换为
- 一个很好的做法是使用查找元素,因为在DOM中可能无法立即使用这些元素,请查看文章以了解更多详细信息
//span[text()='DPD Trend']
如果仍无法找到该图元,请执行以下操作:
- 再次检查它是否在,如果是-您需要在找到之前
- 再次检查它是否未隐藏在中,如果是,则需要定位通孔并将结果强制转换为
- 一个很好的做法是使用查找元素,因为在DOM中可能无法立即使用这些元素,请查看文章以了解更多详细信息