请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,sessionId 为None,没有获取到

import requests
import json
class requests_webdriver:
def init(self):
self.driver = self.chrome_driver()
def chrome_driver(self):
url = 'http://127.0.0.1:4444/wd/hub/session/'
data = json.dumps({
‘desiredCapabilities’:{
‘browserName’:‘chrome’
}
})
res = requests.post(url,data).json()
session = res[‘sessionId’]
driver = url+session
return driver

def get_url(self,url):
    base_url = self.driver+'/url'
    data = json.dumps({
        "url":url
    })
    requests.post(base_url,data)

def find_element_by_id(self,value):
    base_url = self.driver + '/element'
    #json.dumps()将字典转换为字符串
    data = json.dumps({
        "using": 'id',
        "value":value
    })
    res = requests.post(base_url,data).json()
    print(res)

if name == ‘main’:
request_driver = requests_webdriver()
request_driver.get_url(‘https://www.imooc.com/user/newlogin/from_url/’)
request_driver.find_element_by_id(‘email’)
图片描述
代码里 chrome_driver这个方法有sessionId,但下面没有调用这个方法,调用的是find_element_by_id方法,所以sessionId是怎么来的呢,而且始终不太明白为什么要有这个代码 url = ‘http://127.0.0.1:4444/wd/hub/session/’,执行这个selenium-server-standalone-3.9.1.jar,才能运行

正在回答 回答被采纳积分+3

2回答

提问者 慕粉1212355798 2021-05-16 18:42:20

https://img1.sycdn.imooc.com//szimg/60a0f63d09ee47e413520684.jpg

控制台:

D:\练习python\seleniumpythonbase\venv\Scripts\python.exe D:/练习python/seleniumpythonbase/ThreeNode/requests_open_browser.py

1aeb8246e514fab5842e408df9501b28

{'state': 'success', 'sessionId': None, 'hCode': 1071117855, 'value': {'element-6066-11e4-a52e-4f735466cecf': 'a288e26f-b2ac-435c-a202-758f72444fc7'}, 'class': 'org.openqa.selenium.remote.Response', 'status': 0}

Process finished with exit code 0

老师,id换为了name,'sessionId': None  还是为空,element取到的字符串 'a288e26f-b2ac-435c-a202-758f72444fc7',sessionId为空是不是还是不对啊

0 回复 有任何疑惑可以回复我~
  • 你只管create session得时候又session就行了。后面findelement你不用管session是否返回。使用之前返回得sessionid就ok
    回复 有任何疑惑可以回复我~ 2021-05-17 10:12:56
  • 提问者 慕粉1212355798 回复 Mushishi #2
    老师你是指这个就是我的sessionId:1aeb8246e514fab5842e408df9501b28  吧
    回复 有任何疑惑可以回复我~ 2021-05-18 21:42:21
  • Mushishi 回复 提问者 慕粉1212355798 #3
    对的哦
    回复 有任何疑惑可以回复我~ 2021-05-19 09:59:45
Mushishi 2021-04-10 11:42:08

你session id只是上面创建的时候那个啊。一直用的都是那个id 没有变。你下面findelement 提示的是没有找到这个元素 和id没毛线关系

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉1212355798 #1
    老师,chrome_driver这个方法我其实不太明白,代码里为什么要写url = 'http://127.0.0.1:4444/wd/hub/session/',运行前要执行这个selenium-server-standalone-3.9.1.jar包
    回复 有任何疑惑可以回复我~ 2021-04-10 17:34:28
  • Mushishi 回复 提问者 慕粉1212355798 #2
    就是 他后面所有的url都带上了session的。不然不知道是你去访问。selenium-server这个你认为是我们的服务。如果你不要就直接命令启动chromedriver也是可以的 只是端口和方法不一样
    回复 有任何疑惑可以回复我~ 2021-04-11 20:46:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信