1、获取输入框再输入信息的时候,发现send_keys会把内容输入到所获取输入框的隔壁框框(比如下一个框),排查一大通后发现,是因为待输入的数据前面包含个空格(这空格在Excel里还看不出来),send_keys方法会连空格也输入进去,元素定位并没有不准,这空格就是输入“跳框”的元凶。
解决的办法是检查待输入的源数据,strip去掉前后的空格。
2、直接定位元素的方法,比如Xpath和CSS Selector虽然方便,但是用多了程序健壮性会变差。想想也是,比如新开的页面里,按钮多一个少一个,或者顺序位置发生变化,元素就选错了,后面肯定就不按剧本走了。
这时候最好按id、class name来获取,如果不唯一,那就遍历循环判断(比如先找到父元素再遍历各个子元素),虽然程序运行效率会降低一些,但是程序跑起来的时候不容易挂。
关于效率问题其实也不用太纠结,我都纯用Selenium了我还在乎啥效率啊(手动狗头)
3、循环判断筛选元素的时候,get_attribute是个好东东,常见的比如text,scr,甚至onclick事件里的字符串都可以用来做判断。但是切记最好放在try里,遍历虽好,找到个空值就直接挂了。
python+selenium点击<li>里面的链接?实际的链接文本不是“年报”,但“年度报告通过我们完整的上市公司年度报告的目录 浏览”,所以你可能试图仅通过部分文本,以匹配所需的链接:
driverfind_element_by_partial_link_text("Annual Reports")click()
如果你仍然得到Unable to locate element尝试等待一段时间必需的元素出现在DOM,因为它可能会产生dinamically:
from seleniumwebdrivercommonby import By
from seleniumwebdriversupport import expected_conditions as EC
from seleniumwebdriversupportui import WebDriverWait as wait
wait(driver, 10)until(elemenet_to_be_clickable((ByPARTIAL_LINK_TEXT, "Annual Reports")))click()
来源
2017-06-17 10:42:58 Andersson
Thanks for this。但它仍然返回一个错误消息:没有这样的元素:无法找到元素:我完全按照你所提到的输入 –
尝试更新的代码还检查不在iframe中的链接列表 – Andersson
谢谢。假设有一个“等待”是很好的 –

使用正则,引入re包
import restr1 = '<span data-reactid="21$55012701000001">200</span>'
result = refindall(r'<span data-reactid="21\$55012701000001">(\d+)</span>', str1)
print(result)
以上就是关于Python+Selenium 元素获取及使用心得全部的内容,包括:Python+Selenium 元素获取及使用心得、python+selenium点击<li>里面的链接、python+selenium3怎么取出span标签中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)