首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript --使用Selenium-WebDriver什么将内部html返回给变量?

JavaScript --使用Selenium-WebDriver什么将内部html返回给变量?
EN

Stack Overflow用户
提问于 2014-11-03 23:44:41
回答 2查看 1.2K关注 0票数 0

下面是基于我过去的Python项目(这里我使用JavaScript)尝试过的几个例子.

代码语言:javascript
复制
var eltext = driver.findElement(webdriver.By.className('el')).text;
console.log(elname);

var eltext = driver.findElement(webdriver.By.className('el')).innerText;
console.log(elname);

var eltext = driver.findElement(webdriver.By.className('el')).innerHTML;
console.log(elname);

我还尝试了一些其他方法,使用String()JSON.stringify()和各种for循环,在我的选项上旋转。我可以做一个.click(),并且这个对象是可点击的,所以我知道我的选择器是正确的,但是访问JavaScript中的内部文本是一个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-05 02:00:59

以下是您可以这样做的方法:

代码语言:javascript
复制
var webdriver = require('selenium-webdriver');

var driver = new webdriver.Builder().
   withCapabilities(webdriver.Capabilities.chrome()).
   build();

driver.get('http://www.example.com');

var el = driver.findElement(webdriver.By.tagName('div'));

// Get the text of the element using getText...
el.getText().then(function (text) {
    console.log(text);
});

// The code above could be shortened to this:
// el.getText().then(console.log);

// Get the inner HTML of the element using getInnerHtml...
el.getInnerHtml().then(function (html) {
    console.log(html);
});

// The code above could be shortened to this:
// el.getInnerHtml().then(console.log);

// Get the text browser side plus the innerHTML at the same time.
driver.executeScript('\
var el = arguments[0];\
return {text: el.innerText, html: el.innerHTML};\
', el).then(function (val) {
    console.log(val.text);
    console.log(val.html);
});

driver.quit();

您必须使用.then,因为这些方法不返回值本身,而是承诺获得值。

最后一个使用executeScript的方法同时获得这两个值。如果您想知道为什么要使用executeScript,原因是每次对getTextgetInnerHtml的调用都意味着Selenium客户机(脚本)和Selenium服务器(浏览器)之间的往返。在大型测试套件中,这些往返积累起来,可以将 run 添加到套件的运行时。我还把它放在那里,以表明您可以使用此方法在浏览器上运行任何您想要的JavaScript。

票数 1
EN

Stack Overflow用户

发布于 2014-11-03 23:48:41

您正在处理的是Selenium中的WebElement,而不是DOM Element,所以不要尝试使用您从浏览器中知道的DOM。硒是一双不同的鞋子。

Selenium web驱动程序文档指向getText()getInnerHtml()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26725334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档