鱼C论坛

 找回密码
 立即注册
查看: 3758|回复: 8

[已解决]关于selenium自动点击的问题

[复制链接]
发表于 2022-12-19 14:19:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1.     date = "2022-12-19"
  2.     driver.find_element(By.XPATH, '//span[text()=date]').click()   
复制代码


如上代码想要实现如下的效果,应该怎么写
  1. driver.find_element(By.XPATH, '//span[text()="2022-12-19"]').click()
复制代码
最佳答案
2022-12-19 15:32:18
本帖最后由 isdkz 于 2022-12-19 15:35 编辑

  1.     date = "2022-12-19"
  2.     driver.find_element(By.XPATH, f'//span[text()={date!r}]').click()        # 这里加多一个 !r,或者你把 {date!r} 换成 "{date}" 也行,是因为少了双引号出错,我把这个给漏了,!r可以让date以python表达式的方式代入(比如字符串带引号)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-19 14:46:50 | 显示全部楼层
  1.     date = "2022-12-19"
  2.     driver.find_element(By.XPATH, f'//span[text()={date}]').click()   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-19 15:21:36 | 显示全部楼层

按照这个方法的话,会报错
NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//span[text()=2022-12-19]"}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-19 15:23:16 | 显示全部楼层
937135952 发表于 2022-12-19 15:21
按照这个方法的话,会报错
NoSuchElementException: no such element: Unable to locate element: {"met ...


因为没有一个 span 标签的内容是 2022-12-19,所以因为定位不到标签报错

你这个应该也是运行不了的:
driver.find_element(By.XPATH, '//span[text()="2022-12-19"]').click()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-19 15:23:27 | 显示全部楼层
  1. def get_zhongxinjiantou():
  2.    
  3.     s = requests.Session()
  4.    
  5.     fb = webdriver.FirefoxProfile.DEFAULT_PREFERENCES
  6.     # op = webdriver.FirefoxOptions()
  7.     # op.set_preference({'user-data-dir':''})
  8.     c = webdriver.ChromeOptions()
  9.     c.add_argument('--user-data-dir=D:/AutomationProfile')
  10.     # c.add_argument('--headless')
  11.     # c.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36')
  12.     driver = webdriver.Chrome()
  13.    
  14.     driver.get('https://www.cfc108.com/main/yfzx/rcbg/zaohui/index.shtml')  
  15.     time.sleep(3)
  16.    
  17.     date = "2022-12-19"
  18.     driver.find_element(By.XPATH, f'//span[text()={date}]').click()   
  19.     #driver.find_element(By.XPATH, f'//span[text()="2022-12-19"]').click()
  20.     #driver.find_element(By.XPATH, '//div[@id="mmain"]/ul/li[1]/span').click()
  21.     time.sleep(3)
  22.     driver.find_element(By.XPATH, '//a[text()="中信建投期货早间策略20221219.pdf"]').click()
  23.     time.sleep(3)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-19 15:30:02 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-19 15:32:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-12-19 15:35 编辑

  1.     date = "2022-12-19"
  2.     driver.find_element(By.XPATH, f'//span[text()={date!r}]').click()        # 这里加多一个 !r,或者你把 {date!r} 换成 "{date}" 也行,是因为少了双引号出错,我把这个给漏了,!r可以让date以python表达式的方式代入(比如字符串带引号)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-12-20 09:54:06 | 显示全部楼层
  1. date = "2022-12-19"
  2. driver.find_element(By.XPATH, f'//div[text()="{date!r}广发期货能源化工周报汇总"]').click()
复制代码

请问如果我想实现这样子的text()检索,应该怎么写呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-20 10:02:34 | 显示全部楼层
937135952 发表于 2022-12-20 09:54
请问如果我想实现这样子的text()检索,应该怎么写呢

  1. date = "2022-12-19"
  2. driver.find_element(By.XPATH, f'//div[text()="{date}广发期货能源化工周报汇总"]').click()          # {date!r}里面不要!r,!r会给字符串类型加上引号
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 15:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表