因此,我试图识别此按钮以将其按下,但出现异常:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素
奇怪的是,我已经在登录页面中确定了登录按钮,但是进入下一个页面后,就好像无法再标识一个元素了,可能是因为该页面无法允许吗?
#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>
编辑:谢谢大家,我不知道iframe的存在,所以切换它解决了我的问题。
iframe = driver.find_element_by_xpath("//iframe[@name='iframe_Roundtrip_9223342']")
driver.switch_to.frame(iframe)
答案 0 :(得分:0)
使用value
,然后跟随WebDriverWait
单击xpath
标签。
DPD Trend
答案 1 :(得分:0)
Hamza,
WebDriverWait
不起作用。如您所述,您尝试使用Thread.sleep(),但WebDriver仍然找不到该元素。
在我看来,这个问题似乎是由于使用了错误的元素定位器造成的。
如果屏幕快照中的按钮是红色框中的按钮,并且元素检查器中红色框中的代码与此相关,那么在我看来ID应该为TABSTRIP_CONTAINER_ITEM_1_tabStrip_tabstrip-itm-5
。
因此,根据上面的示例,以下代码应找到“ DPD趋势”按钮并单击它:
driver.find_element_by_id("TABSTRIP_CONTAINER_ITEM_1_tabStrip_tabstrip-itm-5").click()
答案 2 :(得分:0)
正确的XPath定位器将很简单:
//span[text()='DPD Trend']
如果仍然无法找到该元素:
仔细检查它是否未隐藏在shadow DOM中(如果存在)-您将需要通过ShadowRoot找到execute_script function并将结果转换为{{3 }}
一种好的做法是使用WebElement来定位元素,因为在DOM中可能无法立即使用它们,请查看WebDriverWait文章以获取更多详细信息。