首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Selenium Python Click函数不工作

Selenium Python Click函数不工作
EN

Stack Overflow用户
提问于 2021-01-01 20:52:25
回答 2查看 99关注 0票数 0

我对这个有一个很大的问题,我现在不知道该怎么办。

所以,我正在尝试使用selenium来获取关于一种弹出窗口的信息。pop up(这就是弹出窗口,它在tiktok上)

按钮追随者的HTML元素: Followers<

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

driver = webdriver.Firefox(executable_path='./geckodriver')
driver.get("https://www.tiktok.com/@programm___r?lang=en") # on lance tiktok sur ordi 

# first thing first, just click on the button that "launch" the pop up
driver.find_element_by_class_name('jsx-1737374796.header-inbox-icon').click()
# Then, I want to click on "Followers" category but this is getting complicated here

# First idea to click on the category, check if it contains the word "followers"
if (driver.find_element_by_xpath('/html/body/div[1]/div/div[1]/div/div[3]/div[2]/div[2]/div/div[1]/div/span[5]').text) == "Followers" : # this line works, no problem 
driver.find_element_by_xpath('/html/body/div[1]/div/div[1]/div/div[3]/div[2]/div[2]/div/div[1]/div/span[5]').click() # this one doesn't work i don't know why 

# So, second idea, try with the webdriverwait
WebDriverWait(driver,20).until(EC.presence_of_element_located((By.XPATH,'/html/body/div[1]/div/div[1]/div/div[3]/div[2]/div[2]/div/div[1]/div/span[5]'))) # this works
driver.find_element_by_xpath('/html/body/div[1]/div/div[1]/div/div[3]/div[2]/div[2]/div/div[1]/div/span[5]').click() # this still doesn't work 

# Third idea, instead o xpath, css-selector 
WebDriverWait(driver,20).until(EC.presence_of_element_located((By.CSS_SELECTOR,"span.jsx-2344352055:nth-child(5)"))) # work, no problem
driver.find_element_by_css_selector("span.jsx-2344352055:nth-child(5)").click() # doesn't work neither..

# Fourth and last idea, probably the least fine, get all the elements with the class name, and only one return Followers with the .text, but still the same problem 
elements = (driver.find_elements_by_class_name("jsx-2344352055")) 
for i in range(len(elements)) : 
    if elements[i].text == "Followers" : 
         elements[i].click() # but still doesn't work 

有时,它起作用了,就像我不知道为什么或如何,但有时,点击起作用了,但就像95%的时间,它不是,我真的不知道为什么

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2021-01-01 21:02:15

您应该使用WebDriverWaitelement_to_be_clickable expected等待按钮变为可单击状态。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException

driver = webdriver.Firefox(executable_path='./geckodriver')
driver.get("https://www.tiktok.com/@programm___r?lang=en") 
WebDriverWait(driver,20).until(EC.presence_of_element_located((By.XPATH,'/html/body/div[1]/div/div[1]/div/div[3]/div[2]/div[2]/div/div[1]/div/span[5]'))) 
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[1]/div/div[1]/div/div[3]/div[2]/div[2]/div/div[1]/div/span[5]'))).click() 
票数 0
EN

Stack Overflow用户

发布于 2021-01-01 21:15:37

请试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver = webdriver.Firefox(executable_path='./geckodriver')
driver.get("https://www.tiktok.com/@programm___r?lang=en") # on lance tiktok sur ordi 

driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS) ;

# first thing first, just click on the button that "launch" the pop up
driver.find_element_by_class_name('jsx-1737374796.header-inbox-icon').click()

我希望这能解决你的问题。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65533604

复制
相关文章
python +selenium识别不来click事件,出现报错
elem = browser.find_element_by_id("txtAccount") # Find the query box elem.send_keys("0@cm.com")
北京-宏哥
2019/09/11
9950
python的dropna函数_Pandas dropna()函数不工作「建议收藏」
prison_data = pd.read_csv(‘https://andrewshinsuke.me/docs/compas-scores-two-years.csv’)
全栈程序员站长
2022/10/02
2.8K0
selenium执行click报错的解决方案
操作时可能出现如下提示错误: selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="xxx">...</div> is not clickable at point (500, 600). Other element would receive the click: <div class="yyy">...</div>
玖柒的小窝
2021/11/16
1.2K0
python click模块
python click模块用于编写命令行程序,它的目的是使用更少的代码,加快编写CLI程序的速度。
用户2936342
2018/08/27
9210
Selenium2+python自动化46-js解决click失效问题
前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应。这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了。 本篇用2种方法解决这种诡异的点击事件失效问题 一、遇到的问
上海-悠悠
2018/04/08
2K0
Selenium2+python自动化46-js解决click失效问题
Selenium底层工作原理
Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web应用的自动化测试。早期也即Selenium1.x时期主要使用Selenium RC(Selenium Remote Control)进来自动化测试。Selenium2.x集成了Selenium和WebDriver的功能。
Meccer
2021/07/20
2.4K0
jQuery 双击事件(dblclick)时,不触发单击事件(click)
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。 先看一下点击事件的执行顺序:
飞奔去旅行
2019/06/13
5.3K0
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.1K0
Python的open函数文件读写线程不
最初图省事,使用了最原始的open函数来写日志,因为开始使用的写文件模式的是追加('a'),发现并没有线程不安全的现象,各个线程的的日志信息都写入到了日志文件中。
py3study
2020/01/16
9990
为什么不推荐Selenium写爬虫
最近在群里经常会看到有些朋友说,使用Selenium去采集网站,我看到其实内心是很难受的,哎!为什么要用Selenium呢? 我想说下自己的看法,欢迎各位大佬批评。 观点 如果可以使用 Requests 完成的,别用 Selenium 数据采集的顺序 接到一个项目或者有一个采集需求时,第一步就是明确自己的需求。经常会遇到半路改需求的事情,真的很难受。 第二步就是去分析这个网站,这个在之前有提到过 采集方案策略之App抓包 : 首先大的地方,我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本
小歪
2018/04/04
2.2K0
为什么不推荐Selenium写爬虫
Python 命令行神器 Click
实际上 Python 标准库提供了一个默认的命令行工具 Argparse,但是对于 Click 来说 Argparse 使用起来非常的繁琐和麻烦,大多数人都很少使用它。Argparse 对比与 Click 就像网页解析中使用的 re 和 BeautifulSoup。
keinYe
2019/10/30
8480
Python click——命令行工具
我们的游戏资源处理工具是python实现的,功能包括csv解析,UI材质处理,动画资源解析、批处理,Androd&iOS自动打包等功能。
py3study
2020/01/10
1.5K0
Python click——命令行工具
python + selenium +
需要在打开浏览器后, 获取浏览器的command_executor url, 以及session_id
py3study
2020/01/06
1.3K0
Python click命令行工具使用
@click.option() 和 @click.argument(),两者有些许区别,使用场景也有所不同。 总体而言,argument() 装饰器比 option() 功能简单些,后者支持下面的特性: 自动提示缺失的输入; option 参数可以从环境变量中获取,argument 参数则不行; option 参数在 help 输出中有完整的文档,argument 则没有;
致Great
2018/12/27
7170
[971]python命令行神器之Click
Click 是 Flask 的开发团队 Pallets 的另一款开源项目,它是用于快速创建命令行的第三方模块。
周小董
2021/05/11
7861
《一头扎进》系列之Python+Selenium框架设计篇5 - 价值好几K的框架,哎呦!这个框架还真有点料啊!!!
  其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了。接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出html的测试报告。本文来介绍下,在同一个类中,多个测试函数时候,测试固件如何写和进一步实现POM和可能遇到问题解决办法。
北京-宏哥
2019/12/25
1.2K0
《一头扎进》系列之Python+Selenium框架设计篇5 - 价值好几K的框架,哎呦!这个框架还真有点料啊!!!
利用selenium爬取数据总结
selenium的介绍 知识点: 了解 selenium的工作原理 了解 selenium以及chromedriver的安装 掌握 标签对象click点击以及send_keys输入 ---- 1. selenium运行效果展示 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏等。我们可以使用selenium
北山啦
2022/11/27
1.2K0
selenium如何下载_python的selenium
在使用新的FirefoxProfile时,使用set_preference方法来配置配置文件,这样就可以单击Save和{},并且在下载过程中不会被中断。您可以按如下方式设置配置:profile = webdriver.FirefoxProfile()
全栈程序员站长
2022/11/04
1.5K0
Python爬虫之数据提取-selenium的介绍
selenium的介绍 知识点: 了解 selenium的工作原理 了解 selenium以及chromedriver的安装 掌握 标签对象click点击以及send_keys输入 ---- 1. selenium运行效果展示 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏等。我们可以使用selenium很
海仔
2020/09/16
1.5K0
点击加载更多

相似问题

Python Selenium click()不工作

16

Selenium Python Element.click不工作

21

Python3.9 Selenium click ()不工作(Vimeo)

12

Selenium .NET Click()不工作

12

selenium webdriver .click()不工作

330
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文