首页 > IT技术 > python > 正文

selenium 对js的输入变量方法
2017-01-04 09:16:11   来源:   评论:0 点击:

对input执行输入直接设置value属性, sendkeys不稳定
driver.find_element_by_xpath(input[@id = "kw"])
  上面的代码,相信很多学习selenium + python 的朋友都很熟悉,就是定位百度首页搜索框的代码,如果我们想把"kw",用一个变量来表示该怎么操作呢?
 
目前,我知道的有两种方法,如下,是定位百度搜索框,点击搜索的代码,在XPath定位的过程中,用了变量:
 
# encoding:utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
 
# 下面这一段使用的是python中变量的方法,简单吧!
def enter(var):
    driver.find_element_by_xpath("//input[@id = '%s']" % var).send_keys("haha")
enter('kw')
time.sleep(3)
 
#下面这一段使用的好像是一种固定格式,在JS中有看到
def enter1(var1):
    driver.find_element_by_xpath("//input[@id = '" + var1 + "']").click()
enter1('su')
time.sleep(3)
driver.quit()
 
1、 对input执行输入
直接设置value属性, 此方法主要应对输入框自动补全以及readonly属性的element,sendkeys不稳定
 
比如:
 
 
selenium常用的js总结
//inputbox is a WebElement
javascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].value=\"北京\"", from_inpox);
对此可以封装一个typeQuick的方法
 
/**
* @author Young
* @param locator
* @param values
* @throws Exception
*/
protected void typeQuick(Locator locator, String values) throws Exception {
WebElement e = findElement(driver, locator);
log.info("type value is: " + values);
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].value=\""+values+"\"", e);
去掉只读属性
 
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].removeAttribute(\"+"readonly"+\")", e); 2.对富文本框的操作 JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement editor = driver.findElement(By.tagName("body"));
js.executeScript( "arguments[0].innerHTML = '<h1>Selenium Test </h1>I love Selenium <br> this article Post By Selenium WebDriver<br><h2>Create By Young</h2>'", editor);

相关热词搜索:js Javascript 搜索框

上一篇:AES算法的加密和解密
下一篇:最后一页

分享到: 收藏
评论排行