Python selenium PO By.XPATH定位元素报错

Python selenium PO  By.XPATH定位元素报错

如下代码经常报错:

    # 首页的“新建投放计划”按钮
    new_ads_plan = (By.XPATH, "//*[text()=‘百度新闻‘]/..")

    print(type(self.new_ads_plan))
    self.driver.find_element(self.new_ads_plan).click()

运行经常报错:selenium.common.exceptions.WebDriverException: Message: invalid argument: ‘using‘ must be a string

解决办法:

self.driver.find_element(*self.new_ads_plan).click()

在参数里面的元素定位 self 前加一个星号 *

=============================================================================================================================================================================================================================

    new_ads_plan = (By.XPATH, "//*[text()=‘百度新闻‘]")
    shouye = (By.XPATH, "//a[text()= ‘首页‘]")
    zanTing = (By.XPATH, "//span[text()= ‘删 除‘]")
    bianji = (By.XPATH, "//span[text()= ‘编 辑‘]")
    addSuCai = (By.XPATH, "//span[text()= ‘添加‘]")

    def isElementExists(self, *loc):
        flag = True
        try:
            for num in range(0, len(loc)):
                print(str(loc[num]))
                self.driver.find_element(*loc[num])
            return flag
        except:
            flag = False
            return flag

    # 判断元素是否显示
    def is_ElementExists(self):
        return self.isElementExists((self.new_ads_plan),
                                    (self.shouye),
                                    (self.zanTing),
                                    (self.bianji),
                                    (self.addSuCai))   

       # 此处必须将多个定位元素的入参以元祖的形式填入,每一个元素的定位参数都是一个数组。

原文地址:https://www.cnblogs.com/111testing/p/10982508.html

时间: 2024-10-14 22:28:12

Python selenium PO By.XPATH定位元素报错的相关文章

python+selenium基础之XPATH定位

世界上最远的距离大概就是明明看到一个页面元素矗在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的.所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了. 下面总结一下xpath的定位方法,结合自己练习的实例加深一

使用python处理selenium中的xpath定位元素的模糊匹配问题

# 用contains,寻找页面中style属性值包含有sp.gif这个关键字的所有div元素,其中@后面可以跟该元素任意的属性名. self.driver.find_element_by_xpath('//div[contains(@style,"sp.gif")]').click() # 用start-with,寻找style属性以position开头的div元素,其中@后面可以跟该元素任意的属性名. self.driver.find_element_by_xpath('//div

python selenium系列(二)元素定位方式

一 前言 元素定位,是操作元素的第一步,也是WebUI自动化的难点和核心. 二 元素定位方法 selenium提供了内置的方法完成对待操作元素的定位,主要分为8类,其中,每类又可细分为定位单个元素和定位多个元素,另外还提供了2个私有方法.详细如下: 定位单个元素 ·         find_element_by_id ·         find_element_by_name ·         find_element_by_xpath ·         find_element_by_

Python自动化之下拉框,隐藏标签定位 代码&报错解决

python自动化:下拉框定位方法之select标签 style="display: none;"报错selenium.common.exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated 界面源码:(禅道为例)排查:1)因为是隐藏的,需要操作其可见才可定位 2)若还是无法定位,请查看前

Selenium-Python学习——通过XPath定位元素

用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的元素缺少合适的 id 或name属性.XPath定位器可以用来绝对或相对定位缺少id或name属性的元素,也可以是用其他属性进行定位. 通过XPath定位的元素容易受html调整的影响,可以先通过id或name属性找到就近的元素,如父元素,用以加强测试脚本的稳定性. 例如,源文件如下: <html>

【appium】根据xpath定位元素

1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是“note1”和“note2”添加到Notepad上面,我们要做的就是尝试用xpath的方法来定位“note2”这个ListView下面的TextView控件. 注意界面上有3个TextView类型的控件: 最上面的作为整个ListView的Title文本为“Notes”的TextView,Index为0 中间的文本为“note2”的TextView,Index也是0 最下面的文本为“note1

初探UiAutomator2.0中使用Xpath定位元素

J 今天的主题是讲一下在使用过程中遇到的一个问题,如何在UiAutomator2.0中使用Xpath定位元素? 背景 现在的app在打包成apk的时候都是有加固处理的,各种混淆加固,所以已经破坏了或扰乱了原本的代码变量命名形式,这就给我们要基于界面来做自动化测试带来了灾难性的阻碍,因为那些混淆过的id是不固定的,下一次再出个新版本,这一切都变了,所以这就没办法用id来定位混淆过的app元素,那还有什么好的方法吗?还记得Web自动化测试中神乎其技的xpath吗?不管什么元素都可以用它定位出来,所以

iOS关于使用for in循环删除数组元素报错

原文链接: iOS关于使用for in循环删除数组元素报错 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://github.com/MajorLMJ iOS开发者公会-技术1群 QQ群号:87440292 iOS开发者公会-技术2群 QQ群号:232702419 iOS开发者公会-议事区   QQ群号:413102158

利用python将文本文件导入数据库时,报错:Duplicate entry &#39;...&#39; for key &#39;PRIMARY&#39;

错误原因就是添加了相同的主键,我想了好一会儿,我抓的数据主键是Isbn啊,不可能重的啊,于是,我去数据库中查了以下报错的isbn号,插入的数据中也有,因为分类不一样,所以要再插入一次,这就肯定会报错啦,其中一个处理方法就是, 如果数据库中有这条记录,那么就跳过这条记录,另外,还可以在跳过这条记录的同时,把数据库中这本书的类别改为这两种类别. ans = con.execute("select * from b where isbn=(%s)",isbn)if (ans): contin