问题描述
嗨,我有以下保存按钮的代码,需要使用 Python Selenium 单击。
1 <button ngcontent-jkv-c423-" " type="button" mat-raised-button=" " id="btnSave" class="mat-focus-indicator mat-raised-button mat-button-base mat-none mat_animation-noopable ng-star-inserted" data-dtname="Work.save">
2 <span class="mat-button-wrapper">
3 <span ngcontent-jkv-c423="" data-dtname="Work.save">
4 <i _ngcontent-jkv-c423-"" aria-hidden="true" class="fas fa-save">
5 </i>
6 "Save "
7 </span>
8 </span>
9 <span matripple=" " class="mat-ripple mat-button-ripple">
10 </span><span class="mat-button-focus-overlay"></span>
11 </button>
T 尝试了以下代码:
1 driver.find_element_by_xpath("//span[contains(text(),'Save ')]").click()
2 driver.find_element_by_class_name("fas fa-save").click()
3 driver.find_element_by_class_name("//span[@data-dtname='Work.save']").click()
有没有其他方法可以做到这一点??
提前致谢。
解决方法
Save
看起来像一个文本节点,所以你不能使用这个 xpath :
//span[contains(text(),'Save ')]
您的 2nd attempt
看起来无效,原因 :-
不支持带空格的类名。
和3rd attempt :-
find_element_by_class_name("//span[@data-dtname='WorkQueue.save']")
您正在通过 xpath
,在 class name.
那么,为什么不id
?
driver.find_element_by_id('btnSave').click()
更新 1:
你能像这样以全屏模式启动浏览器吗。
driver.get('https://google.com')
driver.maximize_window()
,
据我所知,另一个元素覆盖了我想点击的元素,所以我做了以下代码:
save_ele=driver.findelement_by_xpath("**full xpath of the element**)
driver.execute_script("arguments[0].click()",save_ele)
这对我来说很好。