Selenium学习记录

记录在学习使用selenium过程中遇到的问题和方法

1.selenium学习手册

https://www.selenium.dev/zh-cn/documentation/
https://python-selenium-zh.readthedocs.io/zh_CN/latest/
https://www.selenium.dev/selenium/docs/api/py/index.html

2.selenium接管已经打开的浏览器

https://blog.csdn.net/qq254271304/article/details/103493969
打开cmd,在命令行中输入命令:

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

对于-remote-debugging-port值,可以指定任何打开的端口。
对于-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。
还有,不要忘了在环境变量中PATH里将chrome的路径添加进去。
例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress","127.0.0.1:9222")
chrome_driver="C:\ProgramFiles(x86)\Google\Chrome\Application\chromedriver.exe"
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)
print(driver.title)

3. ‘list’ object has no attribute 'click’问题

解决方法:将”driver.find_elements_by_xpath“改为“driver.find_element_by_xpath”即可解决。
https://blog.csdn.net/qq_34671951/article/details/85277252

4.select元素定位

二次定位:基本思路,先定位 select 框,再定位 select 里的选项
https://www.cnblogs.com/101718qiong/p/7929731.html

5.使用js改变hidden元素

js = 'document.getElementById("USER_PRIV0").value="112"'
driver.execute_script(js)

使用document.getElementsByName(“name”)获取元素的value值
getElementsByName是elements复数
正确方法:

var x=document.getElementsByName("name")[0].value;

1、通过元素id属性,获取元素

document.getElementById('id');

2、通过元素name属性,获取元素列表

document.getElementsByName('name');

3、通过标签名,获取元素列表

document.getElementsByTagName('tag_name');

4、通过类名,获取元素列表

document.getElementsByClassName("class_name");

5、通过选择器,获取一个元素

document.querySelector("css selector")

6、通过CSS选择器,获取元素列表

document.querySelectorAll("css selector")

凡是列表都是复数,需要告诉是哪一个
https://www.cnblogs.com/qican/p/14037564.html
https://www.cnblogs.com/qican/p/13578969.html

6.针对JS的弹窗处理-警告框处理

获取弹出框文本:driver.switch_to.alert.text
点击确定:driver.switch_to.alert.accept()
点击取消:driver.switch_to.alert.dismiss()
设值:driver.switch_to.alert.send_keys()

7. 滚动页面函数execute_script

滚动到底部:window.scrollTo(0,document.body.scrollHeight)
滚动到顶部:window.scrollTo(0,0)
说明:
window:js的window对象
scrollTo():window的方法,可以滚到页面的任何位置
scrollHeight:是dom元素的通用属性,document.body.scrollHeight会返回body元素的高度,基本上就是页面的高度
scrollLeft:获取位于对象左边界和窗口目前可见内容的最左端之间的距离
scrollTop:获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象滚动的宽度

driver.execute_script("window.scrollTo(0,0);")

8.selenium获取元素

获取元素对应的HTML

获取整个元素对应的HTML文本内容

element.get_attribute('outerHTML')

获取元素内部的HTML文本内容

element.get_attribute('innerHTML')

获取输入框里面的文字

对于input输入框的元素,要获取里面的输入文本,用text属性是不行的,这时可以使用 element.get_attribute('value')

获取元素文本内容2

正常使用element = wd.find_element_by_id("input1").text获取,
通过WebElement对象的 text 属性,可以获取元素 展示在界面上的 文本内容。
但是,有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时,用WebElement对象的text属性,获取文本内容,就会有问题。

#出现这种情况,可以尝试使用 
element.get_attribute('innerText') 
#或者 
element.get_attribute('textContent')

selenium获取span的text

WebDriver 对象 选择元素的范围是 整个 web页面, 而WebElement 对象 选择元素的范围是 该元素的内部。

from selenium import webdriver
wd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')
wd.get('http://cdn1.python3.vip/files/selenium/sample1.html')
element = wd.find_element_by_id('container')
spans = element.find_elements_by_tag_name('span')
for span in spans:
    print(span.text) 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值