网页元素属性的增删改查操作

通常,我们可以通过八大元素定位方式定位到所需的元素,不过有些时候,元素的属性和状态并不满足自动化的需求,因此,为了解决这个问题,可以采用获取和修改元素属性等操作。这里我们以携程网举例,

首先打开携程官网首页,

driver.get('https://www.ctrip.com/')

定位导航栏中的【火车】元素,

trains_element = driver.find_element_by_id('nav_trains')

接下来如何获得它的属性呢?使用get_attribute()方法,试着得到它的href属性值,

trains_element.get_attribute('href')

通过运行代码可以得到【火车】的href属性值为:https://trains.ctrip.com/

想到得到元素其他属性值,一样的调用get_attribute即可。

上面我们实现了获取元素属性值,那么有没有办法可以修改呢?答案是:可以,

在【火车】页面,搜索火车时,需要选择日期,

但是这里的日期选择是个控件,只能点开后再选择日期,不能手动输入日期,如果要用自动化实现这个操作无疑是非常麻烦的,先来看看这个元素的属性,

可以发现,元素有readonly属性,因此可以猜想,把这个属性删掉,input是不是就可写了,那如何实现呢?

这里使用execute_script()方法,

先定位input元素:

input_element = driver.find_element_by_xpath('//div[@id="singleDate"]/input')

删除readonly属性,

driver.execute_script('arguments[0].removeAttribute(arguments[1])', input_element, 'readonly')

然后试着在input元素中手动输入日期,有两种方法:

第一种,execute_script()修改元素属性:

 driver.execute_script('arguments[0].value="2030-01-01"', input_element) 或 driver.execute_script('arguments[0].setAttribute("value", "2030-01-01"), input_element') 

第二种: input_element.clear() input_element.send_keys('2030-01-01') 

新增属性和修改属性的方式类似,当元素没有该属性时,即为新增。

既然有元素属性,那么网页当然也有,

可以采用类似的方法,如下:

driver.execute_script('return document.URL')

猜你喜欢

转载自www.cnblogs.com/suanmiaoup/p/12389104.html