美文网首页
python3+selenium元素定位疑难杂症总结

python3+selenium元素定位疑难杂症总结

作者: gz_tester | 来源:发表于2019-06-19 18:27 被阅读0次

定位一组元素

self.driver.find_elements_by_class_name(element)

获取一组元素下的某个元素

# num: 从0开始计数,指定该组元素的第几个元素
self.driver.find_elements_by_class_name(element)[num]

上传图片和文件:注意,定位要定到input,要不然传不上去;最好用相对路径

# 获取图片的相对路径
path = '{0}/common/decorators/heard.jpg'.format(os.path.dirname(os.path.dirname(__file__)))
# 使用send_keys()方法上传
self.find_element_by_css_selector('input.ant-input').send_keys(path)

等待元素加载

from selenium.webdriver.support import wait
    def wait(self, element, by=By.CSS_SELECTOR, timeout=30, interval=0.5):
        """
        显示的等待页面加载并检查页面元素
        :param timeout:
        :param interval:
        :param element:
        :return:
        """
        wait.WebDriverWait(self.driver, timeout=timeout, poll_frequency=interval).until(EC.presence_of_element_located((by, element)))

    # 使用示例: 
    def find_element_by_xpath(self, element):
        """
        根据xpath点击获取元素
        :param element:
        :return:
        """
        self.wait(element, by=By.XPATH)
        return self.driver.find_element_by_xpath(element)

    def find_element_by_name(self, element):
        """
        根据name点击获取元素
        :param element:
        :return:
        """
        self.wait(element, by=By.NAME)
        return self.driver.find_element_by_name(element)

判断元素是否存在

from selenium.webdriver.support import wait

    def is_element_exist(self, locator: tuple):
        """
        结合 WebDriverWait 和 expected_conditions 判断元素是否存在,
        每间隔 1 秒判断一次,30s 超时,存在返回 True,不存返回 False
        :param locator: locator 为元组类型,如("id", "yoyo")
        :return:
        """
        try:
            wait.WebDriverWait(self.driver, 30, 1).until(EC.presence_of_element_located(locator))
            return True
        except:
            return False

拖动滚动条到指定element 可见的位置

    def set_scroll_into_view(self, element):
        """
        拖动滚动条到指定element 可见的位置
        element:定位的元素
        :return:
        """
        self.driver.execute_script("arguments[0].scrollIntoView();", element)

    # 使用示例
self.set_scroll_into_view(self.driver.find_element_by_css_selector("span.title___JTR8F"))

设置浏览器滚动条位置

    def set_window_scroll_position(self, x: int, y: int) -> None:
        """
        设置浏览器滚动条位置

        :param int x:横坐标
        :param int y:纵坐标
        :return:
        """

        scroll_top = int(self.driver.execute_script('return document.documentElement.scrollTop'))
        self.driver.execute_script('document.documentElement.scrollLeft={0};'.format(x))
        self.driver.execute_script('document.documentElement.scrollTop={0};'.format(y + scroll_top))

相关文章

  • python3+selenium元素定位疑难杂症总结

    定位一组元素 获取一组元素下的某个元素 上传图片和文件:注意,定位要定到input,要不然传不上去;最好用相对路径...

  • iOS 元素定位总结

    [TOC] 一:Appium 元素定位工具安装 第一种:通过Appium1.6的Inspector来查看 可以通过...

  • 【iOS】错误记录

    本文章负责记录一些iOS调试开发中的疑难杂症,总结学习,方便后期定位问题 安装问题 1.显示 Unable to ...

  • selenium元素定位异常总结

    1、报错:“selenium.common.exceptions.ElementNotInteractableEx...

  • 元素定位方式Xpath总结

    一.绝对路径(不要使用,除非已经使用了所有方式仍然无法定位) 方法:根据实际目录,逐层输写。 例子: find_e...

  • CSS定位

    定位 相对定位 元素框会偏移。 元素保持原状 元素还占原位CSS 相对定位.png 绝对定位 元素框会偏移 元素保...

  • 总结css垂直居中的几种方式,实用

    1.很实用,父元素相对定位,子元素绝对定位 2.父元素相对定位,子元素绝对定位,利用margin。 /*设定水平和...

  • 子元素相对于父元素的绝对定位

    1、参照定位的元素必须是相对定位元素的父元素 2、参照定位的元素必须加入position:relative; 3、...

  • css

    学习总结: 1.框模型 css框模型介绍: 2.定位/浮动: position 定位把一个元素放在静态的相对的绝对...

  • css中定位元素总结

    总结padding、margin、float、position:relative以及position:absolu...

网友评论

      本文标题:python3+selenium元素定位疑难杂症总结

      本文链接:https://www.haomeiwen.com/subject/baczfctx.html