python+selenuim2,webdriver
哪位大神能帮帮忙,利用各种取元素的方式,都找不图片中圈出地方的元素,代码总是过不去,提示Traceback (most recent call last):File "C:/Users/dy/PycharmProjects/untitled/Login/addCard.py", line 15, in <module>
login.driver.find_element_by_css_selector("#form1>div.hc_cont>ul>li:nth-child(10)>em").click()
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 397, in find_element_by_css_selector
return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 707, in find_element
{'using': by, 'value': value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 196, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element
(Session info: chrome=42.0.2311.90)
(Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 x86_64)
取元素方法:
login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').click()
login.driver.find_element_by_css_selector("#form1>div.hc_cont>ul>li:nth-child(10)>em").click()
以上两种港式都使用过了,但是代码就是到这过不去,哪位高手能给指点一下么?E:\QQ图片20160621152405.png E:\工具\QQ图片20160621152405.png 本帖最后由 dy569464507 于 2016-6-21 16:01 编辑
这是图片,请大神指点一下,谢谢~ 定位不到主要有两种情况:出现框架(frame) 或窗口(window)
你尝试下这两种情况:
(1)框架(frame) :switch_to_frame(framename)
(2)打开新窗口: driver.switch_to_window(driver.window_handles[-1])
还是附上图看看吧 若尘_51 发表于 2016-6-21 15:44
定位不到主要有两种情况:出现框架(frame) 或窗口(window)
你尝试下这两种情况:
(1)框架(frame) ...
图附上了,我在回复里弄上的,您看一下 如果没有框架和窗口节点,你可以试试login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').click()在它前面加个等待时间time.sleep(10),前提是要在加上import time。如果还是不行,那你可以尝试先去定位到你想要找的节点的父节点,一级级的往上定位. dy569464507 发表于 2016-6-21 15:58
图附上了,我在回复里弄上的,您看一下
可以尝试下:
(1)你的建设银行是在第十个li
login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').click()
(2)定位到li层
(3)看看能不能打印出来
text = login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').text
print text
(4)你用的谷歌浏览器,换火狐浏览器试试~~有可能是浏览器的问题
若尘_51 发表于 2016-6-21 16:27
可以尝试下:
(1)你的建设银行是在第十个li
login.driver.find_element_by_xpath('//*[@id="form1"]/ ...
text = login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').text
print(text)
我这么试了,打印不出来:(,还有什么办法么? 掉渣饼 发表于 2016-6-21 16:20
如果没有框架和窗口节点,你可以试试login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li[ ...
加time我试过了,不行,就是找不到要的元素 dy569464507 发表于 2016-6-21 17:34
text = login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').text
print(text ...
贴出对应的脚本看看吧。 (或浏览器试了吗?) WebDriverWait(login, 10).until(lambda the_driver: the_driver.find_element_by_class_name("clearfix").is_displayed())
menu=login.find_element_by_class_name("clearfix").find_element_by_link_text("建设银行")
webdriver.ActionChains(login).double_click(menu).perform()
前提是要导入
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
如果不行把webdriver.ActionChains(login).double_click(menu).perform()替换成ActionChains(login).double_click(menu).perform()
掉渣饼 发表于 2016-6-22 09:47
WebDriverWait(login, 10).until(lambda the_driver: the_driver.find_element_by_class_name("clearfix"). ...
#coding=utf-8
import login
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
login.driver.find_element_by_xpath("/html/body/div/div/div/div").click()
'''text = login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').text
print(text)
login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').click()'''
WebDriverWait(login, 10).until(lambda the_driver: login.driver.find_element_by_class_name("clearfix").is_displayed())
menu=login.driver.find_element_by_class_name("clearfix").find_element_by_link_text(u"建设银行")
ActionChains(login).double_click(menu).perform()
这是我写的代码,我把您给我的代码放进去了,但是这段代码还是提示menu=login.driver.find_element_by_class_name("clearfix").find_element_by_link_text(u"建设银行")找不元素。
问题:Traceback (most recent call last):
File "C:/Users/dy/PycharmProjects/untitled/Login/addCard.py", line 13, in <module>
menu=login.driver.find_element_by_class_name("clearfix").find_element_by_link_text(u"寤鸿閾惰")
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 160, 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\webelement.py", line 468, in find_element
{"using": by, "value": value})['value']
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 448, in _execute
return self._parent.execute(command, params)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 196, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element
ps:login是我写的登录脚本 若尘_51 发表于 2016-6-22 08:40
贴出对应的脚本看看吧。 (或浏览器试了吗?)
# -*- coding: UTF-8 -*-
import login
# import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
login.driver.find_element_by_xpath("/html/body/div/div/div/div").click()
text = login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').text
print(text)
login.driver.find_element_by_xpath('//*[@id="form1"]/div/ul/li/em').click()
这是我的脚本 dy569464507 发表于 2016-6-22 13:18
# -*- coding: UTF-8 -*-
import login
# import time
真的看不出什么错误的,你用Selenium IDE录制你的操作,导出python-unittest-webdriver脚本,看看脚本跟你的哪里不一样~~ 我建议你先把登录脚本直接放到里面,试试
#coding=utf-8
你登录脚本中引入的东西
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
登录脚本
WebDriverWait(driver, 10).until(lambda the_driver: the_driver.find_element_by_class_name("clearfix").is_displayed())
menu=driver.find_element_by_class_name("clearfix").find_element_by_link_text("建设银行")
ActionChains(driver).double_click(menu).perform()
或者你把你登录脚本贴出来看下 若尘_51 发表于 2016-6-22 13:43
真的看不出什么错误的,你用Selenium IDE录制你的操作,导出python-unittest-webdriver脚本,看看脚本跟 ...
driver.find_element_by_css_selector("em.8").click()
selenuim IDE中导出的是这个,但是,我也试了,还是不行,说不是有效的
问题:selenium.common.exceptions.InvalidElementStateException: Message: invalid element state: Failed to execute 'querySelector' on 'Document': 'em.8' is not a valid selector. 掉渣饼 发表于 2016-6-22 15:35
我建议你先把登录脚本直接放到里面,试试
#coding=utf-8
你登录脚本中引入的东西
#coding=utf-8
from selenium import webdriver
import time
#登录sso,进入会员中心
driver = webdriver.Chrome()
driver.get("网址")
time.sleep(5)
driver.find_element_by_id("fir_li").click()
driver.find_element_by_id("tel_login").clear()
driver.find_element_by_id("tel_login").send_keys("用户名")
driver.find_element_by_id("pwd_login").clear()
driver.find_element_by_id("pwd_login").send_keys("密码")
driver.find_element_by_id("new_mobilelogin").click()
这是我登录的脚本 dy569464507 发表于 2016-6-22 16:07
driver.find_element_by_css_selector("em.8").click()
selenuim IDE中导出的是这个,但是,我也试了, ...
异常: selenium.common.exceptions.ElementNotSelectableException(msg=None, screen=None, stacktrace=None)
依据: selenium.common.exceptions.InvalidElementStateException
当尝试选择一个未能选中的元素时,异常会抛出
请问下你这个定位的是什么元素?链接还是? dy569464507 发表于 2016-6-22 16:07
driver.find_element_by_css_selector("em.8").click()
selenuim IDE中导出的是这个,但是,我也试了, ...
异常: selenium.common.exceptions.ElementNotSelectableException(msg=None, screen=None, stacktrace=None)
依据: selenium.common.exceptions.InvalidElementStateException
当尝试选择一个未能选中的元素时,异常会抛出
请问下你这个定位的是什么元素?链接还是? dy569464507 发表于 2016-6-22 16:09
#coding=utf-8
from selenium import webdriver
import time
(1) 尝试换别的浏览器:火狐或IE。
(2) 尝试能不能定位到本页的其他元素,看看脚本是不是已经切换到当前页面。
页:
[1]
2