用 driver.find_element_by_link_text('退出').click()异常

问题:
python+seleniu做自动化用 driver.find_element_by_link_text('退出').click()做qq邮箱退出操作程序异常,求大神解答一下哪里有问题!

异常情况如下:
File "D:/PycharmProjects/untitled/mainTest.py", line 13, in
login().user_logout(driver)
File "D:\PycharmProjects\untitled\LoginPublic.py", line 24, in user_logout
driver.find_element_by_link_text('退出').click()
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 282, in find_element_by_link_text
return self.find_element(by=By.LINK_TEXT, value=link_text)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 712, in find_element
{'using': by, 'value': value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException

Process finished with exit code 1

图片说明

3个回答

这个是因为浏览器没有找到element的原因。
没有找到element的话,大概有几个原因:
1.确认是否存在这个元素。它的link_text是不是“退出”两个字。
2.观察一下浏览器,看看是不是这个元素没有加载出来。

yhx3759356
yhx3759356 十分感谢,我在退出前sleep一下就成功了,好人,很感谢
接近 4 年之前 回复
yhx3759356
yhx3759356 那是个链接,不能用ID定位
接近 4 年之前 回复

你那样是看不出来的,要截图你的代码看看才知道

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
怎么获得unittest返回值,也就是代码中的 return str
``` #-*- coding: UTF-8 -*- from threading import Timer import time from selenium import webdriver from nose_parameterized import parameterized import unittest class TestAdd(unittest.TestCase): def setUp(self): self.driver=webdriver.Chrome() self.driver.maximize_window() self.driver.get("http://www.juxiangyou.com") @parameterized.expand([ ('syt350964652@QQ.com'), ('syt350964653@QQ.com'), ]) def test_add(self,username): driver=self.driver driver.find_element_by_id('account').send_keys(username) time.sleep(5) driver.find_element_by_id('password').send_keys('111') time.sleep(11) driver.find_element_by_link_text('登 录').click() time.sleep(2) dqjb=self.driver.current_window_handle driver.find_element_by_link_text('匠神部落').click() time.sleep(2) list_jb=self.driver.window_handles for jb in list_jb: if jb!=dqjb: jb_two=jb driver.switch_to.window(jb_two) driver.find_element_by_id('forgeHall').click() time.sleep(2) time_num=self.driver.find_element_by_class_name('forge').text print(time_num[-8:]) str=time_num[-8:] return str def tearDown(self): self.driver.quit() if __name__=='__main__': unittest.main() ```
Python+Selenium定位悬停元素总是报错,什么原因呢?
#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait import os,time driver=webdriver.Chrome() driver.get("http://192.168.0.222:8085/zfgtaiAdmin/Product/loginBackground.jsp") time.sleep(3) #driver.maximize_window() driver.find_element_by_id("username").clear() driver.find_element_by_id("username").send_keys("15112304365") driver.find_element_by_id("username").send_keys(Keys.TAB) time.sleep(4) driver.find_element_by_id("password").send_keys("System.out.print") driver.find_element_by_css_selector("input[type=\"button\"]").click() driver.find_element_by_link_text("产品管理").move_to_element("产品管理").perform() #WebDriverWait(driver,10).until(lambda the_driver) WebDriverWait(driver,10).until(lambda the_driver:the_driver.find_element_by_link_text("产品管理").is_displayed()) menu= driver.find_element_by_link_text("产品管理").find_element_by_link_text("产品发布") webdriver.ActionChains(driver).move_to_element(menu).perform() time.sleep(5) driver.quit() Traceback (most recent call last): File "E:\WorkSpace\Selenium 1\src\Test14\__init__.py", line 22, in <module> driver.find_element_by_link_text("产品管理").move_to_element("产品管理").perform() File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 317, in find_element_by_link_text return self.find_element(by=By.LINK_TEXT, value=link_text) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element 'value': value})['value'] File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute self.error_handler.check_response(response) File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element (Session info: chrome=50.0.2661.102) (Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 SP1 x86) 这是什么问题啊?
python+selenium自动化写登录脚本时,弹出的第三方登录页面无法定位
from selenium import webdriver import time # 打开浏览器 driver = webdriver.Chrome() #浏览器窗口最大化 driver.maximize_window() #浏览器地址定向为qq登陆页面或直接百度的页面 driver.get("https://588ku.com/?m=Share&a=share&sharecode=27926260") #定位输入信息frame……这些是可以通过在网页界面按F12得到相关信息的 driver.find_element_by_xpath("/html/body/div[1]/div/ul[2]/li[4]/div/a[2]").click() #点击右上角注册按钮 driver.find_element_by_xpath("/html/body/div[15]/div[2]/div[3]/a[1]/span").click() #点击QQ注册按钮 time.sleep (3) driver.switch_to.frame("ptlogin_iframe") #点击账号登陆方式 driver.find_element_by_id("switcher_plogin").click() #账号框输入自己的qq账号 driver.find_element_by_id("u").send_keys("123456") #密码框输入密码 driver.find_element_by_id("p").send_keys("123456") #点击登陆按钮 driver.find_element_by_id("login_button").click() time.sleep (3)
求助,请帮忙看下运行python测试代码提示断开连接
from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '6.0' desired_caps['deviceName'] = 'OPPO A57' #desired_caps['app'] = 'D:/' desired_caps['appPackage'] = 'com.android.calculator2' desired_caps['appActivity'] = '.Calculator' print("android") driver = webdriver.Remote('http://127.0.0.1:4724/wd/hub',desired_caps) print("yilianjie") driver.find_element_by_name("1").click driver.find_element_by_name("5").click driver.find_element_by_name("9").click driver.find_element_by_name("9").click driver.find_element_by_name("9").click driver.find_element_by_name("+").click driver.find_element_by_name("6").click driver.find_element_by_name("6").click driver.find_element_by_name("=").click driver.qiut() File "D:\Program Files\Python\lib\socket.py", line 586, in readinto return self._sock.recv_into(b) ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功,求解
selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功,请问是什么原因呢?求解 selenium脚本如下: ``` #coding = utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys import os import time driver = webdriver.Firefox() driver.get("http://www.baidu.com") # 选择设置 driver.find_element_by_xpath("//*[@id='u1']/a[8]").click() # 点击设置里的搜索设置 driver.find_element_by_xpath("//*[@id='wrapper']/div[5]/a[1]").click() time.sleep(3) m = driver.find_element_by_xpath("//*[@id='nr']") m.find_element_by_xpath("//option[@value=50]").click() # 保存设置的信息 driver.find_element_by_xpath("//*[@id='gxszButton']/a[1]").send_keys(Keys.ENTER) #键盘输入enter # driver.find_element_by_xpath("//*[@id='gxszButton']/a[1]").click() #用click()点__击 time.sleep(3) driver.switch_to_alert().accept() driver.find_element_by_xpath("//input[@id='kw']").send_keys("selenium") driver.find_element_by_xpath("//input[@id='su']").click() time.sleep(30) driver.quit() ``` 实现的功能是在百度搜索设置里,设置每页显示条数。 自动执行已经实现,只是还有点困惑,为什么用click不行,而用enter可以。 求大神指点。。。谢谢。。。
selenium + PhantomJS()无法定位页面元素
用 selenium +chrome() 写了一个爬取 http://www.rainpat.com/Home/Index ‘’ 自动下载专利的爬虫。 一开始使用的 chrom,用的是 xpath 定位元素()右键审查元素,然后复制 xpath )一切正常 [code=php] from selenium import webdriver driver = webdriver.PhantomJS() driver.maximize_window() driver.get('http://www.rainpat.com/Home/Index') new = driver.find_element_by_xpath('/html/body/div[4]/span').click() login = driver.find_element_by_xpath('//[@id="S_top_content"]/div[1]/div[2]/ul/li/a').click() name = driver.find_element_by_xpath('//[@id="SLoginform"]/table/tbody/tr[1]/td[2]/span/input[1]') name.send_keys(name) password = driver.find_element_by_xpath('//[@id="SLoginform"]/table/tbody/tr[2]/td[2]/span/input[1]') password.send_keys(paseeword) login2 = driver.find_element_by_xpath('/html/body/div[3]/div[3]/a[1]/span/span[1]') login2.click() driver.implicitly_wait(5) driver.maximize_window() close22 = driver.find_element_by_xpath('/html/body/div[4]/span').click() driver.maximize_window() search = driver.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/div[2]/input[1]') search.send_keys(str(105636083)) driver.implicitly_wait(2) search_click = driver.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/div[2]/input[2]').click() driver.refresh() driver.implicitly_wait(10) print('download') driver.maximize_window() downloads = driver.find_element_by_xpath('//[@id="S_patentlistup"]/div[2]/table/tbody/tr/td[2]/div[4]/span[4]') [/code] (其中我写了很多刷新和最大化,因为我发现对于同一段代码执行多次有时候能够定位到,有时候不能。我发现加了等待和刷新就可以了。) 但是当我把浏览器换成(driver = webdriver.PhantomJS())之后,在( downloads = driver.find_element_by_xpath('//*[@id="S_patentlistup"]/div[2]/table/tbody/tr/td[2]/div[4]/span[4]'))这一句中,这个元素一直定位不到 报错:NoSuchElementException: 为什么?
求教~python登录邮箱报错
``` from selenium import webdriver driver = webdriver.Chrome() driver.get("http://www.126.com") class Mail(): def __init__(self,mail='',password=''): self.mail = mail self.password = password def login(user_info): iframe = driver.find_element_by_tag_name("iframe") driver.switch_to.frame(iframe) driver.find_element_by_name("email").send_keys(user_info.mail) driver.find_element_by_name("password").send_keys(user_info.password) driver.find_element_by_id("dologin").click() def logout(user_info): driver.find_element_by_id("_mail_component_35_35").click() driver.close() admin = Mail(mail='123456',password='123456') Mail.login(admin) ``` ![图片说明](https://img-ask.csdn.net/upload/201812/28/1545962828_760629.jpg) ![图片说明](https://img-ask.csdn.net/upload/201812/28/1545962845_839465.jpg)
selenium在启动IE浏览器的时候,能否像chrome那样配置user-agent启动参数
这是正常的ie启动 ``` from selenium import webdriver driver = webdriver.Ie() url = "http://www.baidu.com" driver.get(url) input_sign = driver.find_element_by_id("kw") input_sign.send_keys("seo") search_button = driver.find_element_by_id("su") search_button.click() driver.find_elements_by_css_selector(".result h3 a")[2].click() ``` 如题,找不到ie的启动参数配置接口
splinter中利用 .fill( ) .find_by_id( )等函数进行查找, 却显示找不到html中存在的元素?为什么
Python 中splinter的 Browser.fill( )、.find_by_id( )等函数根据name、id查找元素,html中存在却显示查找不到。为什么? 运行代码如下: ``` def start(self): self.driver = Browser(driver_name='chrome') self.driver.driver.set_window_size(1400,1000) self.login() self.driver.visit(self.select_url) class_name=u"微生物与人类健康" #测试一:表单填写 #dict={"kcxx":class_name} #self.driver.fill_form(dict) #测试二:按id查找元素进行填写 b=self.driver.find_by_id("kcxx").first b.fill(class_name) ``` 可都显示:ElementDoesNotExist: no elements could be found with id "kcxx",元素不存在。 html如下: ![图片说明](https://img-ask.csdn.net/upload/201901/25/1548406252_237155.png) 页面如下:![图片说明](https://img-ask.csdn.net/upload/201901/26/1548501941_15077.png)
用selenium模拟登陆网站,点击图片链接后弹出的登陆页面如何输入用户名和密码后进行信息系统中
from selenium import webdriver chromedriver = r"C:\Program Files (x86)\chrome32_50.0.2661.75\chromedriver.exe" driver= webdriver.Chrome(chromedriver) driver.get("http://www.****")#系统网址 driver.find_element_by_xpath("/html/body/div[1]/div[2]/ul/li[4]/a/img").click() newWindow = chromedriver.switchTo().window(handle) driver.find_element_by_class_name("userName").send_keys(u"账户名") driver.find_element_by_class_name("userPwd").send_keys(u"密码") driver.find_element_by_xpath("//*[@id="layui-layer1"]/div[3]/a[1]").click() 新手自学中,1-5行代码可以进入系统登陆页,后面的代码不能输入账户名和密码进入系统中,请高手指点迷津。
Python selenium Firefox 模拟F5按键无效
版本:python3.7 ``` # -*- utf-8 -*- """ 测试一些浏览器的模拟点击事件 """ import requests from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys import time print("启动浏览器") driver = webdriver.Firefox() driver.get("https://cn.bing.com") time.sleep(10) print('准备按键') driver.find_element_by_id('sb_form_q').send_keys('selenium') time.sleep(2) driver.find_element_by_id('sb_form_q').send_keys(Keys.CONTROL,'a') time.sleep(2) driver.find_element_by_id('sb_form_q').send_keys(Keys.CONTROL,'x') action = ActionChains(driver) # driver.find_element_by_class_name('article-title-box').key_down(Keys.F5).perform() action.key_down(Keys.F12).key_up(Keys.F12).perform() print('已经按键') time.sleep(10) print('准备按键1') action = ActionChains(driver) action.key_down(Keys.F5).perform() print('已经按键1') ``` 使用Ctrl+a Ctrl+x 都是有用的。就使用按键无效
在Selenium IED里面导出的.py文件在pycharm运行浏览器调取不了
``` # -*- coding: utf-8 -*- # Generated by Selenium IDE import pytest import time import json from selenium import webdriver #导入驱动, from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys time.sleep(5) class TestDenglu(): def setup_method(self, method): self.driver = webdriver.Chrome() self.vars = {} def teardown_method(self, method): self.driver.quit() time.sleep(5) def test_denglu(self): # Test name: denglu # Step # | name | target | value | comment # 1 | open | / | | self.driver.get("http://192.168.1.118:8083/") # 2 | setWindowSize | 945x1140 | | self.driver.set_window_size(945, 1140) time.sleep(5) # 3 | click | css=.login | | self.driver.find_element(By.CSS_SELECTOR, ".login").click() # 4 | click | css=.login-input:nth-child(3) > input | | self.driver.find_element(By.CSS_SELECTOR, ".login-input:nth-child(3) > input").click() # 5 | click | css=.login | | self.driver.find_element(By.CSS_SELECTOR, ".login").click() # 6 | click | css=.login-input:nth-child(3) > input | | self.driver.find_element(By.CSS_SELECTOR, ".login-input:nth-child(3) > input").click() # 7 | click | css=.login-button | | self.driver.find_element(By.CSS_SELECTOR, ".login-button").click() ```![图片说明](https://img-ask.csdn.net/upload/201909/27/1569567359_21132.png) 在Selenium IED里面导出的.py文件在pycharm运行浏览器调取不了
如何使用selenium进行多协程填写表单?
系统: win10 环境:python3.7 浏览器:chrom 小白自学phthon,使用selenium写了一个工具,任务是进入帐号,点掉所有被选中的勾选框,但是假设我需要对1000个帐号进行同样的操作,for i in range(len(work)):将会打开1000个浏览器窗口,有没有一种方法能实现每次打开5个窗口,直至遍历帐号列表? 这是我的帐号列表:(假装有1000个帐号) (https://img-ask.csdn.net/upload/202001/06/1578295823_23416.png) 这是我的代码: ``` #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_all() from selenium import webdriver import time, openpyxl, gevent from gevent.queue import Queue work = Queue() def login(): if not work.empty(): user = work.get_nowait() driver = webdriver.Chrome() driver.get('http://safe.shougang.com.cn/srp/#') driver.maximize_window() # 打开浏览器登陆首安云并最大化窗口 username = driver.find_element_by_id('userName') username.send_keys(user) password = driver.find_element_by_id('passWord') password.send_keys(user[0][-6:]) # 传入帐号和密码 button = driver.find_element_by_css_selector('.btn.btn-primary') button.click() try: driver.find_element_by_css_selector('.x-component.x-window-text.x-box-item.x-component-default') print('用户%s 密码错误!\n队列剩余%s个' % (user, len(work))) driver.close() return except Exception: time.sleep(1) # 试登陆 try: url_yhpc = driver.find_element_by_partial_link_text('您有待排查') url_yhpc.click() time.sleep(1) except Exception: print('用户%s 无隐患排查任务\n队列剩余%s个' % (user, len(work))) driver.close() time.sleep(1) return daj_button = driver.find_elements_by_css_selector('.x-grid-checkcolumn.x-grid-checkcolumn-checked') for bt in daj_button: bt.click() time.sleep(0.5) send_button = driver.find_element_by_id('button-1302-btnInnerEl') send_button.click() time.sleep(1) yes_button = driver.find_element_by_id('button-1010-btnWrap') yes_button.click() time.sleep(1) driver.close() print('用户%s 排查成功\n队列剩余%s个' % (user, len(work))) def get_users(): wb = openpyxl.load_workbook(r'C:\users\lz315\Desktop\首安云试验.xlsx') ws = wb.active for row in ws.rows: list_user = [] for cell in row: aa = str(cell.value) list_user.append(aa) work.put_nowait(list_user) wb.close() return work # 读取帐号信息,返回帐号list start = time.time() get_users() task_list = [] for i in range(len(work)): task = gevent.spawn(login) task_list.append(task) gevent.joinall(task_list) end = time.time() print(end-start) ```
在python+selenium自动化脚本中,自动化测试代码不运行完也不报错
from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get('http://192.168.2.168:8080/JM') driver.maximize_window() driver.implicitly_wait(30) driver.find_element_by_id('j_username').send_keys('user') driver.find_element_by_id('j_password').send_keys('111111') sleep(3) driver.find_element_by_xpath('//*[@id="loginForm"]/div[4]/button').click() driver.back() sleep(3) message = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/h4').text if 'welcome' in message: print('登录成功,测试成功') else: print('登录失败,测试失败') driver.quit() ``` ``` 遇到chrome中的这个,注释掉就能运行了,不注释代码就一直停在那不运行也不报错,求大神指点一下。 if(zgtisLogin==""){ sessionStorage.setItem("islogin",true); top.location.href="ChatTool://@<%=HongheServer.getInstance().getOperator().getName()%>@<%=HongheServer.getInstance().getOperator().getPassword()%>" }
为什么我的selenium爬虫有界面模式可以运行无界面就不可以啊
```# 启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches 逃避淘宝通过js代码的反爬机制 option = webdriver.ChromeOptions() # option.add_argument('--headless') # option.add_argument('--disable-gpu') option.add_experimental_option('excludeSwitches', ['enable-automation']) driver =webdriver.Chrome(options=option) def Simulated_login():#模拟登录 driver.get('https://login.taobao.com/member/login.jhtml') time.sleep(3) # driver.maximize_window()#让窗口最大化 driver.implicitly_wait(5) driver.find_element_by_id('J_Quick2Static').click()#点击密码登录,它id属性为J_Quick2Static找到并点击 time.sleep(random.random()) # 随机休眠0-1秒 Input_time(driver.find_element_by_id('TPL_username_1'),'13056199018ph') # 模拟点击输入账号框口,输入淘宝账号 time.sleep(random.random())# 随机休眠0-1秒 Input_time(driver.find_element_by_id('TPL_password_1'),'panhao123') # 模拟点击输入密码框口,输入淘宝密码 time.sleep(random.random())# 随机休眠0-1秒 driver.implicitly_wait(3) if driver.find_element_by_id('nc_1_n1z'):#如果滑块验证出现了,找到它的位置,模拟鼠标滑动 Simulated_slider() else: Get_order() ```
请问这个python里selenium获取异步加载的问题
我是新手,请问个小白的问题: 用selenium提取异步加载页面,结果也找不到浏览器里的显示内容是怎么回事? 比如下面这个页面,要获取页面里的关注数量,粉丝数量等资料 ``` from selenium import webdriver driver = webdriver.Chrome() driver.get('https://h5.weishi.qq.com/weishi/personal/1546312839098426/wspersonal?_proxy=1&_wv=1&id=1546312839098426') driver.implicitly_wait(8) # ttt = driver.find_element_by_css_selector('//div').text # text = driver.find_element_by_id('app').text # driver.implicitly_wait(3) print('结果::::::::::::' + driver.page_source) ```
python 中selenium的等待机制不起作用
``` issue_table = driver.find_element_by_id("issuetable") WebDriverWait(driver, 240).until( lambda x: len(x.find_element_by_id("issuetable").find_elements_by_tag_name('tr')) >=10) rows = issue_table.find_elements_by_tag_name("tr") for index, row in enumerate(rows): if index == 0: pass else: WebDriverWait(driver, 60).until( lambda x: len(x.find_elements_by_tag_name('td'))>6) cols = row.find_elements_by_tag_name("td") print(cols[1].text) ``` 这段代码中的等待机制完全不起作用
webdriver进一步爬取京东商品信息
各位大佬好: 刚接触python,想用webdriver实现爬取京东商品信息,举个例子:在京东首页搜索 手机 会显示许多商品结果,我想在搜索出来的基础(商品价钱,商品链接,商品店铺链接)上根据这个“商品店铺链接”进一步爬取这个店铺里面的信息, 请问我的思路是否可行(不一定非要用webdriver),如果可行能否指导下怎么进入这个商品店铺链接 悬赏可以修改这是我的代码: ``` from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # noinspection SyntaxError def get_good(driver): try: # 通过JS控制滚轮滑动获取所有商品信息 js_code = ''' window.scrollTo(0,5000); ''' driver.execute_script(js_code) # 执行js代码 # 等待数据加载 time.sleep(2) # 3、查找所有商品div # good_div = driver.find_element_by_id('J_goodsList') good_list = driver.find_elements_by_class_name('gl-item') n = 1 for good in good_list: # 根据属性选择器查找 # 商品链接 good_url = good.find_element_by_css_selector( '.p-img a').get_attribute('href') # 商品名称 good_name = good.find_element_by_css_selector( '.p-name em').text.replace("\n", "--") # 商品价格 good_price = good.find_element_by_class_name( 'p-price').text.replace("\n", ":") # 评价人数 good_commit = good.find_element_by_class_name( 'p-commit').text.replace("\n", " ") # 店铺连接 #try: shop_url = good.find_element_by_css_selector( '.p-shop a').get_attribute('href') #except OSError: pass # 店铺名称 #try: shop_name = good.find_element_by_css_selector( '.p-shop a').get_attribute('title') #except OSError: pass good_content = f''' 商品链接: {good_url} 商品名称: {good_name} 商品价格: {good_price} 评价人数: {good_commit} 店铺名称: {shop_url} 店铺连接: {shop_name} \n ''' #qianjian = '旗舰店' #if qianjian in shop_name: # print('旗舰店不要') #else: print(good_content) with open('jd.txt', 'a', encoding='utf-8') as f: f.write(good_content) next_tag = driver.find_element_by_class_name('pn-next') next_tag.click() # except AttributeError: # pass # raise Exception("a must not be zero") time.sleep(2) # 递归调用函数 get_good(driver) time.sleep(10) finally: driver.close() if __name__ == '__main__': good_name = input('请输入爬取商品信息:').strip() driver = webdriver.Firefox() #driver.implicitly_wait(10) # 1、往京东主页发送请求 driver.get('https://www.jd.com/') # 2、输入商品名称,并回车搜索 input_tag = driver.find_element_by_id('key') input_tag.send_keys(good_name) input_tag.send_keys(Keys.ENTER) time.sleep(2) get_good(driver) ``` ps:环境:python3.7 需要引入下浏览器驱动,我用的火狐(45.0.2)引入的驱动是:geckodriver-v0.15.0
【求助】为何我这个元素定位不到呢
#coding=utf-8 from selenium import webdriver import time driver = webdriver.Firefox() # driver.set_window_size(480,800) 设置浏览器大小 driver.get("http://10.188.181.74:9082/sso-webapp") driver.maximize_window() #登录系统 driver.find_element_by_name('username').clear() driver.find_element_by_name('username').send_keys('zhulj') driver.find_element_by_name('psword').clear() driver.find_element_by_name('psword').send_keys('1') driver.find_element_by_name('submitBtn').click() time.sleep(30) #进入需求填报销单,需求填报单为新弹开页面 driver.find_element_by_xpath("/html/body/div/div/div[2]/div[3]/div/a[2]/div/div/p[2]").click() time.sleep(20) #就是下面这个定位不到了 driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[3]/div/div[2]/ul/li[6]/a").click() ---------------------------------------------------------------------------------------------------------------------------------------------------- 报错如下: C:\Users\sunl\AppData\Local\Programs\Python\Python36\python.exe E:/自动化测试/test/登录客反.py Traceback (most recent call last): File "E:/自动化测试/test/登录客反.py", line 26, in <module> driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[3]/div/div[2]/ul/li[6]/a").click() #就这句了 File "C:\Users\sunl\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 306, in find_element_by_xpath return self.find_element(by=By.XPATH, value=xpath) File "C:\Users\sunl\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 784, in find_element 'value': value})['value'] File "C:\Users\sunl\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 249, in execute self.error_handler.check_response(response) File "C:\Users\sunl\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: /html/body/div[1]/div[1]/div[3]/div/div[2]/ul/li[6]/a firebug贴图如下 : ![图片说明](https://img-ask.csdn.net/upload/201705/05/1493956509_507779.png) 看了下这个元素并没有在frame和iframe
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
使用 Docker 部署 Spring Boot 项目
Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。首先构建一个简单的 S...
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
Android 9.0 init 启动流程
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、启动流程概述一、 启动流程概述Android启动流程跟Linux启动类似,大致分为如下五个阶段。1.开机上电,加载固化的ROM。2.加载BootLoader,拉起Android OS。3.加载Uboot,初始外设,引导Kernel启动等。...
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问