selenium find_element_by_xpath怎么用

博主在testerhome上遇到一个关于Selenium的问题,发现`find_element_by_xpath`在Java和Python版本中表现不一致。在Java版本中,于某个元素下使用xpath查找时可能查找的是全局元素,而在Python版本的Selenium中,通过注释了解到其行为有所不同。这个问题困扰了博主一段时间,现在希望通过分享来寻求解答。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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"就是整个元素的所有链接了。 加上“.”,问题解决。真的是一个小数点引发的血案啊。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值