lengyue869 发表于 2020-11-15 18:51:00

用selenium登陆鱼C,登陆按钮的元素怎么找?

用selenium登陆鱼C,登陆按钮的元素怎么找?

<button type="submit" class="pn vm" tabindex="904" style="width: 75px;"><em>登录</em></button>

http://ys-i.ys168.com/613967835/ltUJIXp32764H5LK1M8W/20201115184720.png


from selenium import webdriver

url='https://fishc.com.cn/forum-173-1.html'
options=webdriver.ChromeOptions()
options.add_argument('--headless')
driver=webdriver.Chrome()
driver.get(url)
user=driver.find_element_by_id("ls_username")
psw=driver.find_element_by_id("ls_password")
lgn=driver.find_element_by_id()#<=====登陆按钮的元素怎么找?
user.send_keys('xxxx')
psw.send_keys('****')
lgn.click()
# driver.quit()

suchocolate 发表于 2020-11-15 18:59:01

本帖最后由 suchocolate 于 2020-11-15 19:04 编辑

lgn = driver.find_element_by_xpath('//button[@class="pn vm"]')
或者:
lgn = driver.find_element_by_css_name('pn vm')
另外fc论坛用requests就能登陆,用selenium有点慢,不划算。

小帅学python 发表于 2020-11-15 19:24:54

登陆元素没有id,所以不能用id,要找别的元素

lengyue869 发表于 2020-11-15 19:29:15

suchocolate 发表于 2020-11-15 18:59
或者:

另外fc论坛用requests就能登陆,用selenium有点慢,不划算。

最近学习selenium,所以想试试
下面这个可以
lgn = driver.find_element_by_xpath('//button[@class="pn vm"]')

没有driver.find_element_by_css_name('pn vm')这个方法
用的lgn = driver.find_element_by_css_selector('pn vm')

还是报以下错误:
{NoSuchElementException}Message: no such element: Unable to locate element: {"method":"css selector","selector":"pn vm"}

suchocolate 发表于 2020-11-15 19:42:03

lengyue869 发表于 2020-11-15 19:29
最近学习selenium,所以想试试
下面这个可以
lgn = driver.find_element_by_xpath('//button[@class="pn ...

sorry,第二个写错了,应该是lgn = driver.find_element_by_class_name('pn vm')
确实有css_selector方法,想看用法可以参考selenium官方文档:https://selenium-python.readthedocs.io/locating-elements.html#locating-elements-by-class-name
lgn = driver.find_element_by_css_selector('button.pn')

lengyue869 发表于 2020-11-15 19:55:03

本帖最后由 lengyue869 于 2020-11-15 20:01 编辑

suchocolate 发表于 2020-11-15 19:42
sorry,第二个写错了,应该是
确实有css_selector方法,想看用法可以参考selenium官方文档:https://s ...

lgn = driver.find_element_by_class_name('pn vm')还是不行,运行到这句就直接跳出程序了

lgn = driver.find_element_by_css_selector('button.pn')button后面的.pn是什么意思啊?

<button type="submit" class="pn vm" tabindex="904" style="width: 75px;"><em>登录</em></button>

lengyue869 发表于 2020-11-15 20:10:03

suchocolate 发表于 2020-11-15 19:42
sorry,第二个写错了,应该是
确实有css_selector方法,想看用法可以参考selenium官方文档:https://s ...

lgn = driver.find_element_by_class_name('pn vm') 还是不行,直接跳出了程序;

lgn = driver.find_element_by_css_selector('button.pn'),
button后面的.pn是什么意思啊?不带.pn也可以登录,我看了下这个页面有三个button元素,
css_selector('button')怎么就对应到了登录这个button呢?

lengyue869 发表于 2020-11-15 20:23:50

还有我要点击我的帖子怎么写啊?{:5_109:}

http://ys-j.ys168.com/613967813/ksTLLSp55237K5266PHG/111.png

suchocolate 发表于 2020-11-15 20:24:47

1)button.pn是css选择器语句,button代表元素,pn是class的名字,教程:https://www.runoob.com/css/css-id-class.html
2)简单看了一下f12,pn也有被其他元素使用,而登陆这button用了2个class,class_name貌似只能选择一种,所以用class_name估计不行,所以就用xpath吧。
3)不加.pn也能登陆是因为这个button靠前,最先被定为到,如果有多个,就的用css选择器或xpath再继续写语句匹配到。
4)另外,简单完成加载速度比较快,find元素只要有的就能被找到。但有的网站加载慢,没等加载完就可能超时了,推荐用expected:
https://github.com/Python3WebSpider/Python3WebSpider/blob/master/7.1-Selenium%E7%9A%84%E4%BD%BF%E7%94%A8.md#%E6%98%BE%E5%BC%8F%E7%AD%89%E5%BE%85

suchocolate 发表于 2020-11-15 20:26:57

lengyue869 发表于 2020-11-15 20:23
还有我要点击我的帖子怎么写啊?

你先一遍教程吧,自己摸索费时,理论到位,事半功倍。

lengyue869 发表于 2020-11-15 20:28:06

suchocolate 发表于 2020-11-15 20:26
你先一遍教程吧,自己摸索费时,理论到位,事半功倍。

好的,感谢

'https://fishc.com.cn/forum.php?mod=guide&view=my'
页: [1]
查看完整版本: 用selenium登陆鱼C,登陆按钮的元素怎么找?