selenium点击豆瓣登陆按钮失灵的情况

出现这种情况一般有两种:(1)定位出现问题。

                                           (2)iframe标签要加载。

                                           (3)单纯的架构问题。

解决(1)问题方法:

webdriver 提供了一系列的对象定位方法,常用的有以下几种:

id定位:find_element_by_id()
name定位:find_element_by_name()
class定位:find_element_by_class_name()
link定位:find_element_by_link_text()
partial link定位:find_element_by_partial_link_text()
tag定位:find_element_by_tag_name()
xpath定位:find_element_by_xpath()
css定位:find_element_by_css_selector()

from selenium import webdriver
browser=webdriver.Firefox()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过id方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#通过class name方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
browser.find_element_by_css_selector("#kw")
browser.find_element_by_css_selector("[name=wd]")
browser.find_element_by_css_selector(".s_ipt")
browser.find_element_by_css_selector("html > body > form > span > input")
browser.find_element_by_css_selector("span.soutu-btn> input#kw")
browser.find_element_by_css_selector("form#form > span > input")
#通过xpath方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
browser.find_element_by_xpath("//*[@id='kw']")
browser.find_element_by_xpath("//*[@name='wd']")
browser.find_element_by_xpath("//input[@class='s_ipt']")
browser.find_element_by_xpath("/html/body/form/span/input")
browser.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a')
browser.find_element_by_xpath("//span[@class='soutu-btn']/input")
browser.find_element_by_xpath("//form[@id='form']/span/input")
browser.find_element_by_xpath("//input[@id='kw' and @name='wd']")
#
############################################
browser.find_element_by_id("su").click()

参考链接https://blog.csdn.net/weixin_36279318/article/details/79475388

https://www.jianshu.com/p/1531e12f8852

解决(2)问题方法:

iframe是一个html标签,作用是文档中的文档,或者浮动的框架(frame)。iframe标签会创建包含另外一个文档的内联框架(即行内框架)。

使用driver.switch_to_frame()语句,具体例子如下:

from selenium import webdriver
import time
from selenium.webdriver.support.ui import Select  # 导入Select类
driver = webdriver.Chrome()
# 打开示例网页
driver.get('https://www.17sucai.com/pins/demo-show?id=5926')
time.sleep(3)
# 切换iframe
driver.switch_to_frame(driver.find_element_by_id('iframe')) # 将定位到的iframe标签元素当成参数传递进去
# 定位select标签
# select_tag = driver.find_element_by_class_name('nojs')
select_tag = Select(driver.find_element_by_class_name('nojs')) # 将之前定位到的'nojs'标签当作参数传递进去

参考链接:https://blog.csdn.net/m0_46738467/article/details/112974412

解决3问题的方法:

元素当前页面可见,click()点击无效可通过执行js代码实现。

执行js语句代码如下:

driver.execute_scrtip(js) # js即js语句

js查找元素常用语法如下:

document.getElementById("xxx")  # id获取元素,xxx表示id值
document.getElementByClass("xxx")  # class获取元素,xxx表示class值
document.getElementByName("xxx")  #name获取元素,xxx表示name值
document.getElementByTagName("xxx")  # 获取tag标签,xxx表示tag值
document.querySelectorAll("xxx")  # css获取元素,xxx表示css语法
document.getElementById("xxx").click()  # 点击元素,元素后直接click()即可

完整版如下:

js ='document.getElementById("password").click()'  # js点击元素
driver.execute_scrtip(js) # 执行js语句

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值