鱼C论坛

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

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

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

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

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

x
    date = "2022-12-19"
    driver.find_element(By.XPATH, '//span[text()=date]').click()    

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

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

使用道具 举报

发表于 2022-12-19 14:46:50 | 显示全部楼层
    date = "2022-12-19"
    driver.find_element(By.XPATH, f'//span[text()={date}]').click()    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

按照这个方法的话,会报错
NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//span[text()=2022-12-19]"}
想知道小甲鱼最近在做啥?请访问 -> 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-19 15:23:27 | 显示全部楼层
def get_zhongxinjiantou():
    
    s = requests.Session()
    
    fb = webdriver.FirefoxProfile.DEFAULT_PREFERENCES
    # op = webdriver.FirefoxOptions()
    # op.set_preference({'user-data-dir':''})
    c = webdriver.ChromeOptions()
    c.add_argument('--user-data-dir=D:/AutomationProfile')
    # c.add_argument('--headless')
    # 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')
    driver = webdriver.Chrome()
    
    driver.get('https://www.cfc108.com/main/yfzx/rcbg/zaohui/index.shtml')  
    time.sleep(3)
    
    date = "2022-12-19"
    driver.find_element(By.XPATH, f'//span[text()={date}]').click()   
    #driver.find_element(By.XPATH, f'//span[text()="2022-12-19"]').click() 
    #driver.find_element(By.XPATH, '//div[@id="mmain"]/ul/li[1]/span').click()
    time.sleep(3)
    driver.find_element(By.XPATH, '//a[text()="中信建投期货早间策略20221219.pdf"]').click()
    time.sleep(3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-19 15:30:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2022-12-20 09:54:06 | 显示全部楼层
date = "2022-12-19"
driver.find_element(By.XPATH, f'//div[text()="{date!r}广发期货能源化工周报汇总"]').click()
请问如果我想实现这样子的text()检索,应该怎么写呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

date = "2022-12-19"
driver.find_element(By.XPATH, f'//div[text()="{date}广发期货能源化工周报汇总"]').click()          # {date!r}里面不要!r,!r会给字符串类型加上引号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 07:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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