用户模拟爬虫技术

selenium的常用api

2018-08-28  本文已影响17人  Simon0903

简介:

网上找了蛮久,好多中文api文档都被设置权限浏览,趁还未完全被商业化,记录一个方便日后使用
注:任何形式转载文章,请留言作者并注明出处)



作者:Simon0903

链接:https://www.jianshu.com/u/2b4bc3b5e6fc

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

调用说明:

driver.属性值

变量说明:

1.driver.current_url:用于获得当前页面的URL

2.driver.title:用于获取当前页面的标题

3.driver.page_source:用于获取页面html源代码  

4.driver.current_window_handle:用于获取当前窗口句柄

5.driver.window_handles:用于获取所有窗口句柄

函数说明:

一、定位模块.driver.find_element_*():定位元素()

            By.id:driver.findElement(By.id("id));

            By.name:driver.findElement(By.name("name"));

            By.xpath:driver.findElement(By.xpath("//input[@id='id']")); 

            By.className:driver.findElement(By.className("input_class"));

            By.cssSelector:driver.findElement(By.cssSelector(".input_class"));

            By.linkText:driver.findElement(By.linkText("link"));

            By.partialLinkText:driver.findElement(By.partialLinkText("link"));

            By.tagName:driver.findElement(By.tagName("form"));

2.driver.get(url):  #浏览器加载url。   

            实例:driver.get("http//:www.baidu.com")

3.driver.forward():#浏览器向前(点击向前按钮)。

4.driver.back():#浏览器向后(点击向后按钮)。

5.driver.refresh():#浏览器刷新(点击刷新按钮)。

6.driver.close():#关闭当前窗口,或最后打开的窗口。

7.driver.quit():关闭所有关联窗口,#并且安全关闭session。

8.driver.maximize_window():  #最大化浏览器窗口。

9.driver.set_window_size(宽,高):#设置浏览器窗口大小。

10.driver.get_window_size():#获取当前窗口的长和宽。

11.driver.get_window_position(): #获取当前窗口坐标。

12.driver.get_screenshot_as_file(filename):  #截取当前窗口。 

                实例:driver.get_screenshot_as_file('D:/selenium/image/baidu.jpg')

13.driver.implicitly_wait(秒): #隐式等待,通过一定的时长等待页面上某一元素加载完成。若提前定位到元素,则继续执行。若超过时间未加载出,则抛出NoSuchElementException异常。

                实例:driver.implicitly_wait(10) #等待10秒

14.driver.switch_to_frame(id或name属性值): #切换到新表单(同一窗口)。若无id或属性值,可先通过xpath定位到iframe,再将值传给switch_to_frame()

15.driver.switch_to.parent_content(): #跳出当前iframe标签内嵌的表单(往上回退一级目录)。该方法默认对应于离它最近的switch_to.frame()方法。

16.driver.switch_to.default_content(): #跳回最外层的html页面。

17.driver.switch_to_window(窗口句柄):#切换到新窗口。

18.driver.switch_to_alert(): #警告框处理。处理JavaScript所生成的alert,confirm,prompt.

19.driver.execute_script(js): #调用js。

20.driver.get_cookies(): #获取当前会话所有cookie信息。

21.driver.get_cookie(cookie_name):#返回字典的key为“cookie_name”的cookie信息。

                实例:driver.get_cookie("NET_SessionId")

22.driver.add_cookie(cookie_dict):添加cookie。#“cookie_dict”指字典对象,必须有name和value值。

23.driver.delete_cookie(name,optionsString):#删除cookie信息。

24.driver.delete_all_cookies(): #删除所有cookie信息。

25.element.isDisplay();  #判断元素是否显示

26.element.getAttribute()  #得到元素的属性值    


二、动作链

driver.navigate().to("http://www.baidu.com/");   #打开百度

driver.navigate().forward() # 向前

driver.navigate().back()  # 向后

driver.navigate().refresh()    # 刷新

鼠标操作

ActionChains方法列表

move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标

move_to_element(to_element) ——鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置

click(on_element=None)  #单击鼠标左键

click_and_hold(on_element=None) #点击鼠标左键,不松开

context_click(on_element=None) #点击鼠标右键

double_click(on_element=None) #双击鼠标左键

drag_and_drop(source, target) #拖拽到某个元素然后松开

drag_and_drop_by_offset(source, xoffset, yoffset) #拖拽到某个坐标然后松开

key_down(value, element=None) #按下某个键盘上的键

key_up(value, element=None) #松开某个键

move_by_offset(xoffset, yoffset) #鼠标从当前位置移动到某个坐标

move_to_element(to_element) #鼠标移动到某个元素

move_to_element_with_offset(to_element, xoffset, yoffset) #移动到距某个元素(左上角坐标)多少距离的位置

perform()#执行链中的所有动作

release(on_element=None) #在某个元素位置松开鼠标左键

send_keys(*keys_to_send)   #发送某个键到当前焦点的元素

send_keys_to_element(element, *keys_to_send)  # 发送某个键到指定元素

登录后拿cookie实例:

% driver.get('https://www.csdn.com/')

% print("登录前:")

% for cookie in driver.get_cookies():

%        print(cookie)

% loginC =  driver.find_element_by_css_selector('#login_area')

% enter =  loginC.find_element_by_link_text('登录')register.click()

#等待20秒,手动输入账号密码,登录。记得勾选下次自动登录,就怕页面有检测机制

% time.sleep(25)

% print("登录后: ") 

% for cookie01 in driver.get_cookies():

%       print(cookie01)

% driver.quit()


判断元素是否显示

element.isDisplay();

获取元素属性

element.getAttribute()  #得到元素的属性值    

输入框操作

element.sendKeys(“test”)  # 在输入框中输入内容test:

element.clear()  # /将输入框清空

element.getText() # 获取输入框的文本内容: 

下拉选择框

select.selectByVisibleText(“A”);

select.selectByValue(“1”); 

select.deselectAll();

select.deselectByValue(“1”);

select.deselectByVisibleText(“A”);

select.getAllSelectedOptions();

select.getFirstSelectedOption(); 

单选框

radio.click()  # 选择某个单选项

radio.clear()  #清空某个单选项

radio.isSelected() #/判断某个单选项是否已经被选择

多选框

checkbox.click();

checkbox.clear();

checkbox.isSelected()  #判断多选框是否被选择

checkbox.isEnabled()  #判断多选框是否可用

按钮

button.click()  #点击按钮

button.isEnabled ()  #判断按钮是否可用

Alert对话框

alert.accept() #点击确定

alert.dismiss()  #点击取消

alert.getText() #获取Alert对话框的文本

表单

approve.click() 

approve.submit()  #只适合于表单的提交

超时设置 

driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS)  #识别元素时的超时时间

driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS)  #页面加载时的超时时间

driver.manage().timeouts().setScriptTimeout(10,TimeUnit.SECONDS)   #异步脚本的超时时间

截屏

File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE)

上一篇 下一篇

猜你喜欢

热点阅读