Python+Selenium 元素获取及使用心得

Python+Selenium 元素获取及使用心得,第1张

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 re

str1 = '<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标签中的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9731431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存