一个前端工程师需要编写代码时用到 html + css + JavaScript(js)
html负责底层的元素,css负责页面的样式,JavaScript负责编写一些动态页面,代码逻辑等
标签名#属性值 #代表id
id:
input#kw
#kw
class:
input.s_ipt
属性:(通用格式)
css的学习成本还是要高的,好多具体用法可以参考CSS 参考手册 | 菜鸟教程
元素定位过程过,经常会报这个错误
selenium.common.exceptions.NoSuchElementException: Message: no such element
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestDeom:
def test_01(self):
with webdriver.Chrome() as browser:
browser.get('http://baidu.com/')
browser.implicitly_wait(5)
el = browser.find_element(By.XPATH, '//input[@id="kw"]')
el.send_keys('柠檬班')
search_button = browser.find_element(By.ID, 'su')
search_button.click()
lemon_link = browser.find_element(By.LINK_TEXT, 'www.lemonban.com')
lemon_link.click()
运行结果:
这个不是因为查找的元素不对,而是页面还没加载出来,百分之八十都是因为时间没有设置等待造成的,所以我们来介绍一下等待的方法
等待的方法:
设置隐性等待后运行通过,如下
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestDeom:
def test_01(self):
with webdriver.Chrome() as browser:
# 设置隐性等待
browser.implicitly_wait(10)
browser.get('http://baidu.com/')
browser.implicitly_wait(5)
el = browser.find_element(By.XPATH, '//input[@id="kw"]')
el.send_keys('柠檬班')
search_button = browser.find_element(By.ID, 'su')
search_button.click()
lemon_link = browser.find_element(By.LINK_TEXT, 'lemon.ke.qq.com/')
lemon_link.click()
运行结果:
设置显性等待后运行通过,如下
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as when
class TestDeom:
def test_01(self):
with webdriver.Chrome() as browser:
browser.get('http://baidu.com/')
browser.implicitly_wait(5)
el = browser.find_element(By.XPATH, '//input[@id="kw"]')
el.send_keys('柠檬班')
search_button = browser.find_element(By.ID, 'su')
search_button.click()
# 设置显性等级
# 1.等待器,设置倒计时
# 2.等待条件出现
# 3.在超时前,如果等待条件出现了,如果等待条件没有出现,会报超时错误
wait = WebDriverWait(browser, timeout=10)
# 注意等待某个元素是传入元组或列表
condition = when.element_to_be_clickable((By.LINK_TEXT, 'lemon.ke.qq.com/'))
lemon_link = wait.until(condition)
lemon_link.click()
运行结果:
总结: