selenium中为什么依据xpath定位html页面左边树形菜单无效

selenium中为什么依据xpath定位html页面左边树形菜单无效,第1张

没找准定位基准吧。

selenium使用Xpath定位之完整篇

主题 Xpath Selenium

其中有一片文章提到了xpath元素定位,但是该文章中有些并不能适应一些特殊与个性化的场景。在文本中提供xpath元素的定位终极篇,你一定能在这里找到你需要的解决办法。

第一种方法:通过绝对路径做定位(相信大家不会使用这种方式)

Byxpath("html/body/div/form/input")

Byxpath("//input")

第三种方法:通过元素索引定位

Byxpath("//input[4]")

第四种方法:使用xpath属性定位(结合第2、第3中方法可以使用)

Byxpath("//input[@id='kw1']")

Byxpath("//input[@type='name' and @name='kw1']")

第五种方法:使用部分属性值匹配(最强大的方法)

Byxpath("//input[start-with(@id,'nice')

Byxpath("//input[ends-with(@id,'很漂亮')

Byxpath("//input[contains(@id,'那么美')]")

第6种方法:使用xpath轴(未曾使用)

希望,以上这些方法,能够帮助到你。

1通过selenium定位方式(id、name、xpath等方式)定位table标签

#html源码<table border="5" id="table1" width="80%">#selenium *** 作代码table1=driverfind_element_by_id('table1')

2获取总行数(也就是获取tr标签的个数)

#html源码<tr><th>姓名</th><th>性别</th></tr>#selenium *** 作源码

table_rows = table1find_elements_by_tag_name('tr')

3获取总列数(也就是tr标签下面的th标签个数)

#html源码<tr><th>姓名</th><th>性别</th></tr>#selenium *** 作源码:第一个tr标签下有多少个th

table_rows = table_rows[0]find_elements_by_tag_name('th')

4获取单个cell值

#selenium *** 作源码:第一行第二列的text值row1_col2 = table_rows[1]find_elements_by_tag_name('td')[1]text

5取值比对~

查看ui自动化生成的html报告。pytest+allure只生成了xml报告--json格式的数据,没有生成html的index报告。

场景:

排查:

1cmd输入allure --version,查看是安装成功

2pycharm输入pip freeze,查看包是否配置成功

都显示安装、配置成功

3pycharm软件Terminal中输入allure

怀疑是pycharm软件哪里配置除了问题,排查浪费了N多时间。

最终总算是配置好了~

解决方法:

这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素:

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

        下面是查找多个元素(这些方法将返回一个列表):

find_elements_by_name

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

除了上面给出的公共方法,这里也有两个在页面对象定位器有用的私有方法。这两个私有方法是find_element和find_elements。

常用方法是通过xpath相对路径进行定位,同时CSS也是比较好的方法。举例:

[html] view plain copy

<html>

<body>

<form id="loginForm">

<input name="username" type="text" />

<input name="password" type="password" />

<input name="continue" type="submit" value="Login" />

<input name="continue" type="button" value="Clear" />

</form>

</body>

<html>

        定位username元素的方法如下:

[python] view plain copy

username = driverfind_element_by_xpath("//form[input/@name='username']")

username = driverfind_element_by_xpath("//form[@id='loginForm']/input[1]")

username = driverfind_element_by_xpath("//input[@name='username']")

        [1] 第一个form元素通过一个input子元素,name属性和值为username实现

        [2] 通过id=loginForm值的form元素找到第一个input子元素

        [3] 属性名为name且值为username的第一个input元素

二 *** 作元素方法

在讲述完定位对象(locate elements)之后我们需要对该已定位对象进行 *** 作,通常所有的 *** 作与页面交互都将通过WebElement接口,常见的 *** 作元素方法如下:

clear 清除元素的内容

send_keys 模拟按键输入

click 点击元素

submit 提交表单

举例自动访问FireFox浏览器自动登录163邮箱。

[python] view plain copy

from selenium import webdriver

from seleniumwebdrivercommonkeys import Keys

import time

# Login 163 email

driver = webdriverFirefox()

driverget("")

elem_user = driverfind_element_by_name("username")

elem_userclear

elem_usersend_keys("15201615157")

elem_pwd = driverfind_element_by_name("password")

elem_pwdclear

elem_pwdsend_keys("")

elem_pwdsend_keys(KeysRETURN)

#driverfind_element_by_id("loginBtn")click()

#driverfind_element_by_id("loginBtn")submit()

timesleep(5)

assert "baidu" in drivertitle

driverclose()

driverquit()

        首先通过name定位用户名和密码,再调用方法clear()清除输入框默认内容,如“请输入密码”等提示,通过send_keys("")输入正确的用户名和密码,最后通过click()点击登录按钮或send_keys(KeysRETURN)相当于回车登录,submit()提交表单。

        PS:如果需要输入中文,防止编码错误使用send_keys(u"中文用户名")。

三 WebElement接口获取值

通过WebElement接口可以获取常用的值,这些值同样非常重要。

size 获取元素的尺寸

text 获取元素的文本

get_attribute(name) 获取属性值

location 获取元素坐标,先找到要获取的元素,再调用该方法

page_source 返回页面源码

drivertitle 返回页面标题

current_url 获取当前页面的URL

is_displayed() 设置该元素是否可见

is_enabled() 判断元素是否被使用

is_selected() 判断元素是否被选中

tag_name 返回元素的tagName

以上就是关于selenium中为什么依据xpath定位html页面左边树形菜单无效全部的内容,包括:selenium中为什么依据xpath定位html页面左边树形菜单无效、Python selenium 打开新页面,怎么放变量(链接)、Python+selenium自动化,Allure包不生成index.html文件,解决方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9575401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存