[英]How to accept insecure certificates in Chrome using Selenium-Webdriver for JavaScript?
[英]Selenium-WebDriver how to highlight element using javascript and firefox browser
我在創建有效函數時遇到問題,該函數將突出顯示網頁上的某些已定義元素。 請注意,我是編碼初學者,問題可能是簡單的環境設置問題,或者缺乏對 javascript/selenium 功能的主要知識。
我在 Eclipse Neon 中創建了我的腳本。 為了設置環境,我已經安裝了 node.js 和 geckodriver 以便能夠在 firefox 瀏覽器上運行。 我的腳本的開頭是:
var webdriver = require('selenium-webdriver'),
By = webdriver.By
var driver = new webdriver.Builder().forBrowser('firefox').build();
我使用driver.get();
打開網頁driver.get();
然后我簡單地使用 xPath 定義元素位置,例如:
var element = driver.findElement(By.xpath("xPath goes here"));
現在問題開始了,我應該怎么做才能讓 WebDriver 用 for ex 突出顯示這個指定的元素。 紅色邊框? 在瀏覽 Stack 和其他類似頁面時,我發現的唯一答案是在 Java 語法中使用 JavaScript Executor 或使用一些 webdriver 函數
element.style.backgroundColor = 'red'
但我收到控制台錯誤,該style
或語法的其他部分不是函數。 在這一點上,我沒有解決方案如何實現這一點,我慢慢懷疑,我是否能夠在不了解 html5/java 的情況下完成這項任務。 也許有人遇到過這樣的困難,會分享線索嗎?
https://jsfiddle.net/osav574j/ <- 我已經准備了我的腳本的簡單版本,它可以讓您了解我的完整代碼的樣子。 亮點部分可能是錯誤的,只是為了向您展示我認為它是如何完成的,但這純粹是假設。
干杯! 珀克爾
您應該嘗試使用executeScript()
如下:-
var element = driver.findElement(By.xpath("xPath goes here"));
driver.executeScript("arguments[0].style.backgroundColor = 'red'", element);
這是用於突出顯示元素的 Javascript 代碼。 Selenium 沒有任何本地方法可以突出顯示,因此唯一的出路是使用類似於以下的代碼:
JavascriptExecutor js=(JavascriptExecutor)driver;
js.executeScript("arguments[0].setAttribute('style','border: solid 2px red')", username);
這里 username 是 webelement 的名稱。
這是閃爍元素的解決方案,示例閃爍 google 搜索輸入字段。 您可以參數化眨眼的風格和時間間隔/頻率。
const browsertype = 'chrome';
//const browsertype = 'firefox';
const { Builder, By, Key, until} = require('selenium-webdriver');
require( browsertype + 'driver' );
//require('selenium-webdriver/' + browsertype);
const link = 'https://www.google.hu/';
const btx = '//input[@name="q"]';
var browser = new Builder().forBrowser( browsertype ).build();
browser.navigate().to( link );
//browser.get( link );
var element = browser.findElement( By.xpath( btx ) );
blink( browser, element );
async function blink( browser, element ) {
var i,
blink = { wait: 500,
duration: 3000,
//on: "arguments[0].style.backgroundColor = 'purple'",
//off: "arguments[0].style.backgroundColor = 'white'",
on: "arguments[0].setAttribute('style','border: solid 2px yellow;')",
off: "arguments[0].setAttribute('style','border: solid 0px white;')"
}
blink.loop = Math.floor( blink.duration / blink.wait );
blink.loop += blink.loop % 2;
for(i=0;i<blink.loop;i++){
await browser
.executeScript( blink[ i%2==0 ? "on" : "off"],
element );
await browser.sleep( blink.wait );
}
}
//driver.quit();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.