searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

JS操作元素与元素判断方法

2024-12-12 09:10:58
0
0

一、js操作元素
① js操作浏览器滚动条
js
"window.scrollTo(0,document.body.scrollHeigh t);" 
driver.execute_script(js)
2)滚动到顶部
js = "window.scrollTo(0,0);"
driver.execute_script(js)
3) 滚动到元素出现的位置(聚焦元素)
target = driver.find _element(By.id, "xxx))
js = "arguments[0].scrollintoView();"
driver.execute_script(js, target)
② js获取元素的几种方法
1) 通过id获取(获取到的是单个元素)
document.getElementByld('xxx')
2)通过name获取(获取到的是多个元素,取第一个)
diocument.getElementsByName('xxx')[0]
3) 通过标签获取(获取到的是多个元素,取第一个)
document.getElementsByTagName('xxx')[0]
4)通过class获取(获取到的是多个元素,取第一个)
document.getElementsByClassName('xxx')[0]
5) 通过css选择器获取
document.querySelector('css表达式”)

③js处理有iframe的富文本 text=“ 需要输入的文本内容”
js

”document.getElementByld( *xxx' ).contentWindow.
document.body.innerHTM =' %S ;”% text
driver .execute_ script(js)
js处理有iframe的富文本无需先切换到iframe.上,再切回来操作,它可以在iframe和主页面来回自由操作。
注意:以上js方法只是专门处理有iframe的富文本,其它地方遇到iframe不一定通用。

④js处理有iframe的普通元素
document. getElementByld(iframeid).contentWindow.
document.getElementByld(元素的id)

⑤js操作有readonly属性的日历控件
在例如12306网站上对日期的操作,进行如下步骤

1)去除元素的readonly属性

2) 执行JS脚本

3)清空输入框

4)输入时间

js1 =document.getElementByld( train_ date ').  removeAttribute( readonly );"

driver .execute_ script(js1)

driver.find_ element_ by_ id( 'train_ date' ).clear() 

driver.find_ element_ by_ id( 'train_ _date ).send_ ke ys('2020- -06- -01') 

te HEISEvalue lt

js2

document.getElementByld( 'train_ _date' ).value= '2020-06- -01'"

driver.execute_ script(js2)⑥js操作内嵌div滚动条

先定位div的位置,再通过scrollTop和scroll eft方法控制进度。

控制纵向滚动条位置:
“document.getElementByld( xxx’).scrollTop=10000;"
driver.execute_ script(js)控制横向滚动条位置:

“document.getElementByld( 'xXX ).scroll _eft=10000;”

driver .execute_ script(js)

⑦js解决click失效问题

方法一:先点击父元素,找回焦点,再点击子元
driver.find_ element(By.id,‘父元素id’).click() driver.fnd_ element(By.id ,子元素id ).click()方法二:用js直接去点击

js =“document.getElementByld( *xxx ).click();' driver. execute_ script(js)

方法三: jquery语法去点击

jq =“$( css表达式).click()”

driver.execute_ script(jq)二、元素判断方法

①is_ _displayed() 判断元素是否可见,返回布尔值

元素在页面上有三种状态:

1)不在dom对象里,也就是不存在这个元素;

2)在dom对象里,是隐藏元素,在页面上不可 见,用is_ displayed()方法判断,返回False;

3)在dom对象里,是显示元素,在页面上可见, 用is_ displayed()方 法判断,返回True。

S

置”)

driver .find_ element_ by_ _link_ text(“搜索设

print(S.is_ displayed()) --- 判断“搜索设置 ”是否可见

②is_ selected() 判断select下拉框、单选框和复选框是否被选择,返回布尔值

③is_ enabled 判断元素是否可以被点击,可以输入文本,返回布尔值

三、expected_ conditions(EC)模块 提供的元素判断方法

①导入模块

From selenium.webdriver .support expected_ conditions as EC

import

②判断方法
1) EC.title_ _is(预期title)(driver)判断预期title与实际title是否相等。

2) EC.title_ _contains(预期title)(driver)判断预期title是否包含于实际title.

3) EC.text_ to_ be_ present in_ element(元素定位,预期元素文本)(driver)

判断预期元素文本与实际元素文本是否相等

4) EC.text to_ _be_ present _in element. value(元素定位,预期value属性)(driver)

判断元素的预期value属性与实际value属性是否相等

5) EC.alert_ is_ present()(driver)判断当前是否有alert弹框

6) EC.present of _element _located((定位方式,定位表达式))

判断元素是否存在

7 ) EC.visibility_ of_ _element_ located(( 定位方式,定位表达式))

判断元素是否可见

8) EC.presence_ of_ _all elements_ located((定 位方式,定位表达式))

判断是否至少有1个元素存在举个例子:

如果页面上有n个元素的class都是“cloumn3”,那么只要有1个元素存在,这个方法就返回True。

EC.frame_ to_ be_ available_ and _switch_ _to_ it()

判断该frame是否可以switch进去,如果可以,返 回True并且switch进去,否则返回False 。

10) EC.invisibility_ of _element_ located((定 位方式,定位表达式))

判断元素是否不可见或不存在

11) EC.element to_ be_ _clickablel(定位方式,定位表达式))

判断元素是否可见并且可操作(如可被点击) 12) EC.staleness_ of((定位方式,定位表达式))

等某个元素从dom对象中移除

13) EC.element_ to_ be_ selected((定位方式, 定位表达式))

判断select下拉框是否被选中

14) EC.element_ selection_ state. to be((定位方式,定位表达式))

判断某个元素的选中状态是否符合预期

0条评论
0 / 1000
c****u
6文章数
0粉丝数
c****u
6 文章 | 0 粉丝
原创

JS操作元素与元素判断方法

2024-12-12 09:10:58
0
0

一、js操作元素
① js操作浏览器滚动条
js
"window.scrollTo(0,document.body.scrollHeigh t);" 
driver.execute_script(js)
2)滚动到顶部
js = "window.scrollTo(0,0);"
driver.execute_script(js)
3) 滚动到元素出现的位置(聚焦元素)
target = driver.find _element(By.id, "xxx))
js = "arguments[0].scrollintoView();"
driver.execute_script(js, target)
② js获取元素的几种方法
1) 通过id获取(获取到的是单个元素)
document.getElementByld('xxx')
2)通过name获取(获取到的是多个元素,取第一个)
diocument.getElementsByName('xxx')[0]
3) 通过标签获取(获取到的是多个元素,取第一个)
document.getElementsByTagName('xxx')[0]
4)通过class获取(获取到的是多个元素,取第一个)
document.getElementsByClassName('xxx')[0]
5) 通过css选择器获取
document.querySelector('css表达式”)

③js处理有iframe的富文本 text=“ 需要输入的文本内容”
js

”document.getElementByld( *xxx' ).contentWindow.
document.body.innerHTM =' %S ;”% text
driver .execute_ script(js)
js处理有iframe的富文本无需先切换到iframe.上,再切回来操作,它可以在iframe和主页面来回自由操作。
注意:以上js方法只是专门处理有iframe的富文本,其它地方遇到iframe不一定通用。

④js处理有iframe的普通元素
document. getElementByld(iframeid).contentWindow.
document.getElementByld(元素的id)

⑤js操作有readonly属性的日历控件
在例如12306网站上对日期的操作,进行如下步骤

1)去除元素的readonly属性

2) 执行JS脚本

3)清空输入框

4)输入时间

js1 =document.getElementByld( train_ date ').  removeAttribute( readonly );"

driver .execute_ script(js1)

driver.find_ element_ by_ id( 'train_ date' ).clear() 

driver.find_ element_ by_ id( 'train_ _date ).send_ ke ys('2020- -06- -01') 

te HEISEvalue lt

js2

document.getElementByld( 'train_ _date' ).value= '2020-06- -01'"

driver.execute_ script(js2)⑥js操作内嵌div滚动条

先定位div的位置,再通过scrollTop和scroll eft方法控制进度。

控制纵向滚动条位置:
“document.getElementByld( xxx’).scrollTop=10000;"
driver.execute_ script(js)控制横向滚动条位置:

“document.getElementByld( 'xXX ).scroll _eft=10000;”

driver .execute_ script(js)

⑦js解决click失效问题

方法一:先点击父元素,找回焦点,再点击子元
driver.find_ element(By.id,‘父元素id’).click() driver.fnd_ element(By.id ,子元素id ).click()方法二:用js直接去点击

js =“document.getElementByld( *xxx ).click();' driver. execute_ script(js)

方法三: jquery语法去点击

jq =“$( css表达式).click()”

driver.execute_ script(jq)二、元素判断方法

①is_ _displayed() 判断元素是否可见,返回布尔值

元素在页面上有三种状态:

1)不在dom对象里,也就是不存在这个元素;

2)在dom对象里,是隐藏元素,在页面上不可 见,用is_ displayed()方法判断,返回False;

3)在dom对象里,是显示元素,在页面上可见, 用is_ displayed()方 法判断,返回True。

S

置”)

driver .find_ element_ by_ _link_ text(“搜索设

print(S.is_ displayed()) --- 判断“搜索设置 ”是否可见

②is_ selected() 判断select下拉框、单选框和复选框是否被选择,返回布尔值

③is_ enabled 判断元素是否可以被点击,可以输入文本,返回布尔值

三、expected_ conditions(EC)模块 提供的元素判断方法

①导入模块

From selenium.webdriver .support expected_ conditions as EC

import

②判断方法
1) EC.title_ _is(预期title)(driver)判断预期title与实际title是否相等。

2) EC.title_ _contains(预期title)(driver)判断预期title是否包含于实际title.

3) EC.text_ to_ be_ present in_ element(元素定位,预期元素文本)(driver)

判断预期元素文本与实际元素文本是否相等

4) EC.text to_ _be_ present _in element. value(元素定位,预期value属性)(driver)

判断元素的预期value属性与实际value属性是否相等

5) EC.alert_ is_ present()(driver)判断当前是否有alert弹框

6) EC.present of _element _located((定位方式,定位表达式))

判断元素是否存在

7 ) EC.visibility_ of_ _element_ located(( 定位方式,定位表达式))

判断元素是否可见

8) EC.presence_ of_ _all elements_ located((定 位方式,定位表达式))

判断是否至少有1个元素存在举个例子:

如果页面上有n个元素的class都是“cloumn3”,那么只要有1个元素存在,这个方法就返回True。

EC.frame_ to_ be_ available_ and _switch_ _to_ it()

判断该frame是否可以switch进去,如果可以,返 回True并且switch进去,否则返回False 。

10) EC.invisibility_ of _element_ located((定 位方式,定位表达式))

判断元素是否不可见或不存在

11) EC.element to_ be_ _clickablel(定位方式,定位表达式))

判断元素是否可见并且可操作(如可被点击) 12) EC.staleness_ of((定位方式,定位表达式))

等某个元素从dom对象中移除

13) EC.element_ to_ be_ selected((定位方式, 定位表达式))

判断select下拉框是否被选中

14) EC.element_ selection_ state. to be((定位方式,定位表达式))

判断某个元素的选中状态是否符合预期

文章来自个人专栏
Electron知识点记录
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0