selenium find_element_by_xpath怎么用

在testerhome上发现一个问题,正好当时自己也遇到过,一直没解决,问题如下

  • li[8].find_element_by_css_selector("a.msk") 的输出 和li[8].find_element_by_xpath('//a[@class="msk"]')的输出不同, 但是 xpath '//a[@class="msk"]'转化成css就是a.msk啊,求解.
# coding=utf-8
url='http://music.163.com/#/discover/playlist/?order=hot&cat=全部&limit=35&offset=0'
from selenium import webdriver
ff=webdriver.Firefox()
ff.get(url)

ff.switch_to_frame('g_iframe')

li=ff.find_elements_by_xpath('//div[@id="m-disc-pl-c"]/div//li')

print '*'*10
print li[8].find_element_by_css_selector("a.msk").get_attribute('title') # 结果是对的
print li[8]==li[0] # False
print li[8].find_element_by_xpath('//a[@class="msk"]').get_attribute("title") #结果错误的

print '*'*10
ff.quit()


之前我用java写的selenium,没去看源码,自己公司的项目在element下使用xpath寻找元素找的确实是全局的

今天正好用了python版的selenium,发现它的find_element_by_xpath有注释。。。

而且还很清晰。。。

    def find_element_by_xpath(self, xpath):
        """Finds element by xpath.

        :Args:
            xpath - xpath of element to locate.  "//input[@class='myelement']"
        Note: The base path will be relative to this element's location.
        This will select the first link under this element.
        ::
            myelement.find_elements_by_xpath(".//a")
        However, this will select the first link on the page.
        ::
            myelement.find_elements_by_xpath("//a")
        """
        return self.find_element(by=By.XPATH, value=xpath)
注释的意思就是要我们在element下使用相对路径来寻找元素。".//a"是元素下的所有链接,而去掉点的"//a"就是整个元素的所有链接了。 加上“.”,问题解决。真的是一个小数点引发的血案啊。
发布了7 篇原创文章 · 获赞 2 · 访问量 2万+
展开阅读全文

【求助】为何我这个元素定位不到呢

05-05

#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 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览