webdriver修改元素value

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webdriver修改元素value相关的知识,希望对你有一定的参考价值。

参考技术A 直接通过js更改。在web自动化测试时,有一些界面的选择框,并不好去定位,或者限制比较多。在这种场景下,可以通过js操作,更改界面属性等,达到输入的目的。

selenium-webdriver的二次封装

接着上篇随笔 selenium-配置文件定位元素 ,进行了配置文件设置后,将配置文件运用到定位元素中

思路:拿到定位的 key 和 value 后,对 webdrvier 中定位进行封装,使可以直接运用

主要的8种定位方法:  

  • find_element_by_id   
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector
# conding=utf-8

from selenium import webdriver
from auto_learning.config import ReadIni #导入读取的配置文件的py文件,如果不能导入检查是否是包(__init__.py文件存在 )文件

class FindElement(object):
    def __init__(self,driver):
        self.driver = driver

    def get_Element(self,pageElement,key):
        # 实例化ReadIni
        file_name = \'../config/BaiduElement.ini\'
        read_ini = ReadIni.ReadIni(file_name)
        key_value = read_ini.get_value(pageElement,key)
        key = key_value.split(\':\')[0]
        value = key_value.split(\':\')[1]

        try:
            if key == \'id\':
                return self.driver.find_element_by_id(value)
            elif key == \'class\':
                return self.driver.find_element_by_class_name(value)
            elif key == \'name\':
                return self.driver.find_element_by_name(value)
            elif key == \'tag\':
                return self.driver.find_element_by_tag_name(value)
            elif key == \'linkText\':
                return self.driver.find_element_by_link_text(value)
            elif key == \'cssSelector\':
                return self.driver.find_element_by_css_selector(value)
            elif key == \'xpath\':
                return self.driver.find_element_by_xpath(value)

        except:
            return None

由于浏览器有好多种,所以也需要重新定义浏览器的启动

对构造函数进行修改

    def __init__(self,driverName):
        try:
            if driverName == \'chrome\':
                self.driver = webdriver.Chrome()
            elif driverName == \'dege\':
                self.driver = webdriver.Edge()
            elif driverName == \'firefox\':
                self.driver = webdriver.Firefox()
            elif driverName == \'safari\':
                self.driver = webdriver.Safari()

        except:
            error_message = "find not " + driverName
            print(error_message)

        self.driver.maximize_window()
        url = \'https://www.baidu.com\'
        self.driver.get(url)

在项目中如果用单一浏览器可能会造成堵塞

所以就需要多个浏览器同时跑脚本,不至于一个浏览器的压力太大

# conding=utf-8

from selenium import webdriver
import time
from auto_learning.config import ReadIni #导入读取的配置文件的py文件,如果不能导入检查是否是包(__init__.py文件存在 )文件

class FindElement(object):
    def __init__(self,i):
        self.driver = self.get_driver(i)
        time.sleep(3)
        url = \'https://www.baidu.com\'
        self.driver.get(url)
        self.driver.maximize_window()

    def get_driver(self,i):
        if i == 0:
            return webdriver.Chrome()
        elif i == 1:
            return webdriver.Edge()
        elif i == 2:
            return webdriver.Firefox()
        elif i == 3:
            return webdriver.Safari()

    def get_Element(self,pageElement,key):
        # 实例化ReadIni
        file_name = \'../config/BaiduElement.ini\'
        read_ini = ReadIni.ReadIni(file_name)
        key_value = read_ini.get_value(pageElement,key)
        key = key_value.split(\':\')[0]
        value = key_value.split(\':\')[1]

        try:
            if key == \'id\':
                return self.driver.find_element_by_id(value)
            elif key == \'class\':
                return self.driver.find_element_by_class_name(value)
            elif key == \'name\':
                return self.driver.find_element_by_name(value)
            elif key == \'tag\':
                return self.driver.find_element_by_tag_name(value)
            elif key == \'linkText\':
                return self.driver.find_element_by_link_text(value)
            elif key == \'cssSelector\':
                return self.driver.find_element_by_css_selector(value)
            elif key == \'xpath\':
                return self.driver.find_element_by_xpath(value)

        except:
            return None


if __name__ == \'__main__\':
    for i in range(3):
        findElement = FindElement(i)
        input_text = findElement.get_Element(\'BaiduHomeElement\',\'baidu_search_input\')

 

以上是关于webdriver修改元素value的主要内容,如果未能解决你的问题,请参考以下文章

webdriver获取变色的元素

如何使用 WebDriver 检查元素是不是可见

WebDriver:检查元素是不是存在? [复制]

Python3.x:Selenium中的webdriver进行页面元素定位

Selenium with Python 008 - WebDriver 元素等待

Selenium C# WebDriver:等到元素出现