GVKun编程网logo

Selenium 2.0 WebDriver进阶交互DoubleClick帮助(c#)(selenium onclick)

9

以上就是给各位分享Selenium2.0WebDriver进阶交互DoubleClick帮助,其中也会对c#进行解释,同时本文还将给你拓展Electron使用Selenium和WebDriver、Ja

以上就是给各位分享Selenium 2.0 WebDriver进阶交互DoubleClick帮助,其中也会对c#进行解释,同时本文还将给你拓展Electron 使用 Selenium 和 WebDriver、JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测、org.openqa.selenium.WebDriverBackedSelenium的实例源码、Python Selenium Webdriver click()无法正常工作等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Selenium 2.0 WebDriver进阶交互DoubleClick帮助(c#)(selenium onclick)

Selenium 2.0 WebDriver进阶交互DoubleClick帮助(c#)(selenium onclick)

因此,在selenium回归测试中,我一直试图双击日历以创建新的应用。我试图使用doubleClick();
AdvancedUserInteractions库中的方法,但是存在问题;这两次单击的速度不够快/不够紧密,无法触发实际的双击!是否有人在测试中找到解决此问题的方法?

答案1

小编典典

该代码对我有用!

Actions action = new Actions(driver);action.doubleClick(myElemment);action.perform();

Electron 使用 Selenium 和 WebDriver

Electron 使用 Selenium 和 WebDriver

引自ChromeDriver - WebDriver for Chrome:

WebDriver 是一款开源的支持多浏览器的自动化测试工具。它提供了操作网页、用户输入、JavaScript 执行等能力。ChromeDriver 是一个实现了 WebDriver 与 Chromium 联接协议的独立服务。它也是由开发了 Chromium 和 WebDriver 的团队开发的。

为了能够使 chromedriver 和 Electron 一起正常工作,我们需要告诉它 Electron 在哪,并且让它相信 Electron 就是 Chrome 浏览器。

通过 WebDriverJs 配置

WebDriverJs 是一个可以配合 WebDriver 做测试的 node 模块,我们会用它来做个演示。

1. 启动 ChromeDriver

首先,你要下载 chromedriver,然后运行以下命令:

$ ./chromedriver
Starting ChromeDriver (v2.10.291558) on port 9515Only local connections are allowed.

记住 9515 这个端口号,我们后面会用到

2. 安装 WebDriverJS

$ npm install selenium-webdriver

3. 联接到 ChromeDriver

在 Electron 下使用 selenium-webdriver 和其平时的用法并没有大的差异,只是你需要手动设置连接 ChromeDriver,以及 Electron 的路径:

const webdriver = require('selenium-webdriver');var driver = new webdriver.Builder()  // 9515 是ChromeDriver使用的端口
  .usingServer('http://localhost:9515')
  .withCapabilities({
    chromeOptions: {      // 这里设置Electron的路径
      binary: '/Path-to-Your-App.app/Contents/MacOS/Atom',
    }
  })
  .forbrowser('electron')
  .build();

driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() { return driver.getTitle().then(function(title) {   return title === 'webdriver - Google Search';
 });
}, 1000);

driver.quit();

通过 WebdriverIO 配置

WebdriverIO 也是一个配合 WebDriver 用来测试的 node 模块

1. 启动 ChromeDriver

首先,下载 chromedriver,然后运行以下命令:

$ chromedriver --url-base=wd/hub --port=9515Starting ChromeDriver (v2.10.291558) on port 9515Only local connections are allowed.

记住 9515 端口,后面会用到

2. 安装 WebdriverIO

$ npm install webdriverio

3. 连接到 ChromeDriver

const webdriverio = require('webdriverio');var options = {
    host: localhost, // 使用localhost作为ChromeDriver服务器
    port: 9515,        // 9515是ChromeDriver使用的端口
    desiredCapabilities: {
        browserName: 'chrome',
        chromeOptions: {
          binary: '/Path-to-Your-App/electron', // Electron的路径
          args: [/* cli arguments */]           // 可选参数,类似:'app=' + /path/to/your/app/
        }
    }
};var client = webdriverio.remote(options);

client
    .init()
    .url('http://google.com')
    .setValue('#q', 'webdriverio')
    .click('#btnG')
    .getTitle().then(function(title) {        console.log('Title was: ' + title);
    })
    .end();

工作流程

无需重新编译 Electron,只要把 app 的源码放到 Electron的资源目录 里就可直接开始测试了。

当然,你也可以在运行 Electron 时传入参数指定你 app 的所在文件夹。这步可以免去你拷贝-粘贴你的 app 到 Electron 的资源目录。

JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测

JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测

我正在尝试使用selenium和铬在网站中自动化一个非常基本的任务,但是以某种方式网站会检测到铬是由selenium驱动的,并阻止每个请求。我怀疑该网站是否依赖像这样的公开DOM变量https://stackoverflow.com/a/41904453/648236来检测selenium驱动的浏览器。

我的问题是,有没有办法使navigator.webdriver标志为假?我愿意尝试修改后重新尝试编译selenium源,但是似乎无法在存储库中的任何地方找到NavigatorAutomationInformation源https://github.com/SeleniumHQ/selenium

任何帮助深表感谢

PS:我还从https://w3c.github.io/webdriver/#interface尝试了以下操作

Object.defineProperty(navigator, ''webdriver'', {    get: () => false,  });

但是它仅在初始页面加载后更新属性。我认为网站会在执行脚本之前检测到变量。

答案1

小编典典

从当前的实现开始,一种理想的访问网页而不被检测到的方法是使用ChromeOptions()该类向以下参数添加几个参数:

排除enable-automation开关的集合
关掉 useAutomationExtension
通过以下实例ChromeOptions

Java示例:

System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");ChromeOptions options = new ChromeOptions();options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));options.setExperimentalOption("useAutomationExtension", false);WebDriver driver =  new ChromeDriver(options);driver.get("https://www.google.com/");

Python范例

from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option(''useAutomationExtension'', False)driver = webdriver.Chrome(options=options, executable_path=r''C:\path\to\chromedriver.exe'')driver.get("https://www.google.com/")

org.openqa.selenium.WebDriverBackedSelenium的实例源码

org.openqa.selenium.WebDriverBackedSelenium的实例源码

项目:OpenNMS    文件:OpenNMSSeleniumTestCase.java   
@Before
public void setUp() throws Exception {
    MockLogAppender.setupLogging(true,"DEBUG");

    // Google Chrome
    // System.setProperty("webdriver.chrome.driver","/Users/ranger/Downloads/chromedriver");
    // WebDriver driver = new ChromeDriver();

    // Selenium Remote Server
    // DesiredCapabilities capability = DesiredCapabilities.firefox();
    // WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),capability);

    // Firefox
    WebDriver driver = new FirefoxDriver();

    String baseUrl = "http://localhost:8980/";
    selenium = new WebDriverBackedSelenium(driver,baseUrl);
    selenium.open("/opennms/login.jsp");
    selenium.type("name=j_username","admin");
    selenium.type("name=j_password","admin");
    selenium.click("name=Login");
    waitForPagetoLoad();
}
项目:Prospero    文件:WebDriverBackedSeleniumDriver.java   
protected WebDriverBackedSeleniumDriver(WebDriver wd,String url) {
super();
setSiteUrl(url);
Selenium wdbs = new WebDriverBackedSelenium(wd,url);
setSelenium(wdbs);
startSelenium();
   }
项目:crawljax    文件:OverviewIntegrationTest.java   
@BeforeClass
public static void setup() throws Exception {
    LOG.debug("Starting Jetty");
    server = new Server(0);

    String url = setupJetty();
    LOG.info("Jetty started on {}",url);
    driver = new FirefoxDriver();
    LOG.debug("Starting selenium");
    selenium = new WebDriverBackedSelenium(driver,url);

    driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}
项目:Mahesh.tutorials    文件:WrapperFunctions.java   
/**
 * @param driver
 * @param locator
 */

public void hoverMouSEOn(WebDriver driver,String locator) {
    WebDriverBackedSelenium selenium = new WebDriverBackedSelenium(driver,driver.getcurrenturl());
    selenium.mouSEOver(locator);
}
项目:selenium-yatspec-petclinic    文件:OwnerPage.java   
public OwnerPage(WebDriverBackedSelenium selenium) {
    super("Owners",selenium,HomePage.PAGE_TITLE);
    if (!selenium.getHtmlSource().contains("Owner information")) {
        String msg = format("Owner information page has not been loaded from [%s]",selenium.getLocation());
        throw new NotCorrectPageException(msg);
    }
}
项目:selenium-yatspec-petclinic    文件:AddOwnerPage.java   
public AddOwnerPage(WebDriverBackedSelenium selenium) {
    super("Add Owner",HomePage.PAGE_TITLE);
    if (!selenium.getHtmlSource().contains(" New  Owner")) {
        String msg = format("Add Owner page has not been loaded from [%s]",selenium.getLocation());
        throw new NotCorrectPageException(msg);
    }
}
项目:selenium-yatspec-petclinic    文件:FindOwnersPage.java   
public FindOwnersPage(WebDriverBackedSelenium selenium) {
    super("Find Owners",HomePage.PAGE_TITLE);
    if (!selenium.getHtmlSource().contains("Find Owners")) {
        String msg = format("Find Owners page has not been loaded from [%s]",selenium.getLocation());
        throw new NotCorrectPageException(msg);
    }
}
项目:selenium-yatspec-petclinic    文件:HomePage.java   
public HomePage(WebDriverBackedSelenium selenium) {
    super("Home",PAGE_TITLE);
    if (!selenium.getHtmlSource().contains("Welcome")) {
        String msg = format("Home page has not been loaded from [%s]",selenium.getLocation());
        throw new NotCorrectPageException(msg);
    }
}
项目:selenium-yatspec-petclinic    文件:BasePage.java   
public BasePage(String internalPageName,WebDriverBackedSelenium selenium,String expectedPageText) {
    this.internalPageName = internalPageName;
    this.selenium = selenium;
    String html = getHtml();
    if (!html.contains(expectedPageText)) {
        String msg = format("Page body (%s) does not contain expected text (%s),current page is: %s",html,expectedPageText,selenium.getLocation());
        throw new NotCorrectPageException(msg);
    }
}
项目:EarthWorm    文件:browserEmulator.java   
public browserEmulator() {
    setupbrowserCoreType(GlobalSettings.browserCoreType);
    browser = new WebDriverBackedSelenium(browserCore,"https://github.com/");
    javaScriptExecutor = (JavascriptExecutor) browserCore;
    logger.info("Started browserEmulator");
}
项目:EarthWorm    文件:browserEmulator.java   
/**
 * 获取 WebDriverBackedSelenium 实例
 * @return
 */
public WebDriverBackedSelenium getbrowser() {
    return browser;
}

Python Selenium Webdriver click()无法正常工作

Python Selenium Webdriver click()无法正常工作

认证过程需要一些时间。您可以在单击按钮后再使另一个“睡眠”状态,然后开始工作。

def login(self):
    self.driver.implicitly_wait(10)
    self.driver.get('{}/'.format(self.base_url))
    self.driver.find_element_by_name('username').send_keys(self.username)
    self.driver.find_element_by_name('password').send_keys(self.password)
    self.driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[3]').click()
    time.sleep(5)    # <--- adjust to your needs

今天关于Selenium 2.0 WebDriver进阶交互DoubleClick帮助c#的讲解已经结束,谢谢您的阅读,如果想了解更多关于Electron 使用 Selenium 和 WebDriver、JavaSelenium Webdriver:修改navigator.webdriver标志以防止selenium检测、org.openqa.selenium.WebDriverBackedSelenium的实例源码、Python Selenium Webdriver click()无法正常工作的相关知识,请在本站搜索。

本文标签: