Python-Selenium中使用JS方式定位元素

文章目录

      • 一、以下总结了5种js定位的方法
        • 1.通过id获取
        • 2.通过name获取
        • 3.通过标签名选取元素
        • 4.通过CLASS类选取元素
        • 5.通过CSS选择器选取元素

一、以下总结了5种js定位的方法

除了id是定位到的是单个element元素对象,其它的都是elements返回的是list对象

1.通过id获取

document.getElementById(“id”)

from selenium import webdriver
from selenium.common.exceptions import WebDriverException
import unittest
from time import sleep


class TestDeom(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("开始执行测试用例")
        driver_path = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"
        cls.driver = webdriver.Chrome(executable_path=driver_path)

    def test_executeScript(self):
        url = "https://www.baidu.com/"
        self.driver.get(url)

        searchInputBoxJs = "document.getElementById('kw').value='光荣之路';"
        searchButtonJS = "document.getElementById('su').click()"

        try:
            self.driver.execute_script(searchInputBoxJs)
            sleep(2)
            self.driver.execute_script(searchButtonJS)
            sleep(2)
            self.assertTrue(u"百度百科" in self.driver.page_source)
            
        except WebDriverException as e:
            print("在页面中没有找到需要操作的页面元素", e)
        except AssertionError as e:
            print("页面中不存在断言的的关键字串")
        except Exception as e:
            print(e)

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()


if __name__ == '__main__':
    unittest.main()

2.通过name获取

document.getElementsByName(“Name”) -----(获取的是list)

修改部分代码如下:


searchInputBoxJs = "document.getElementsByClassName('s_ipt')[0].value='光荣之路';"
sleep(2)
searchButtonJS = "document.getElementsByClassName('bg.s_btn')[0].click()"
        

3.通过标签名选取元素

document.getElementsByTagName(“tag”) -----(获取的是list)

4.通过CLASS类选取元素

document.getElementsByClassName(“class”) -----(获取的是list)
兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法

5.通过CSS选择器选取元素

  • HTML5向Web API新引入了 document.querySelector()和document.querySelectorAll()两个方法,都可以接收三种类型的参数:id(#),class(,),标签,就像jquery选择器,参数需要是合法的CSS选择语法。
  • 用起来更方便的从DOM中选取元素,功能类似于jquery的选择器,这样在写原生js代码的时候就方便了许多。

document.querySelector(“css selector") -----(获取的是单个元素)
document.querySelectorAll(“css selector”) -----(获取的是元素list)

修改部分代码如下:

# 方式一:
searchInputBoxJs = "document.querySelector('input#kw').value='光荣之路';"
searchButtonJS = "document.querySelector('input#su').click()"

# 方式二:
input_css = "input#kw"
click_css = "input#su"
searchInputBoxJs = "document.querySelector('%s').value='光荣之路';" % input_css
searchButtonJS = "document.querySelector('%s').click()" % click_css


# 注意:
searchInputBoxJs  &  searchButtonJS  里面的%s ,这个是需要添加单引号(‘’),

文章来源:
https://www.cnblogs.com/lunvo/p/9183119.html
https://www.cnblogs.com/zhongjiang/p/6651352.html

你可能感兴趣的:(元素定位)