天道酬勤,学无止境

selenium-webdriver

Using extensions with Google Chrome Selenium driver

问题 我正在尝试像这样添加我的扩展: from selenium.webdriver.chrome.options import Options import os executable_path = "C:/Chrome/chromedriver.exe" os.environ["webdriver.chrome.driver"] = executable_path chrome_options = Options() chrome_options.add_extension('C:/Users/Wilson/AppData/Local/Google/Chrome/User Data/Default/Extensions') driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options) 但得到以下错误: Traceback (most recent call last): File "C:/Users/Wilson/Dropbox/xxx.py", line 77, in <module> driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options

2022-07-11 09:37:09    分类:技术分享    python   google-chrome   selenium   selenium-webdriver

StaleElementException when Clicking on a TableRow in an Angular WebPage

问题 <div id="crm" class="row gridrow clickable ng-scope" ng-repeat="customer in customerList" ng-click="gotoRecord(customer.id)"> <i class="col m1 s1 tiny fa fa-male"></i> <div class="col m3 s11 ng-binding"> Allard</div> <div class="col m2 s12 ng-binding"></div> </div> 我有这个 HTML 片段,它是作为对名为“Allard”的客户的搜索操作的结果显示的一行。 我想单击此客户以继续到下一页,但大多数情况下这会导致 StaleElementException。 我尝试了两种不同的方式,使用量角器和不使用量角器。 第一种方式: IWebElement elem = driver.FindElement(By.XPath("//*[contains(text(),'" + nameCustomer + "')]//parent::div[contains(@id,'crm')]")); ExplicitWait.WaitAndClick(driver, elem); 第二种方式: var customers = driver

2022-05-17 03:02:28    分类:技术分享    c#   angularjs   selenium-webdriver   protractor-net

xpath ".//span", what does the dot mean? [duplicate]

问题 这个问题在这里已经有了答案: XPath 中的 .// 和 //* 有什么区别? (4 个回答) 硒的xpath中的点(。)是什么意思? (1 个回答) 5年前关闭。 在//header[.//span[contains(text(), 'part_title')]]//label[contains(@class, 'start')]中, . .//中的点是什么意思? 回答1 您需要了解 XPath“上下文”节点的概念。 导航 XPath 表达式时,每个步骤都标识一个上下文节点或节点集,从该上下文节点或节点集评估后续表达式,绝对路径除外,例如// 。 构造.//span的意思是“从当前节点开始,在当前上下文节点以下的任何级别找到下一个后代span 。与./span对比,这意味着当前上下文节点的直接子span 。 没有前导点/span表示根节点,如果它是span , //span表示文档中任何级别的第一个span 。 或者,更简单地说,前导点与 . 具有完全相同的含义. Linux 目录中的条目。

2022-05-16 09:34:48    分类:技术分享    html   xml   xpath   selenium-webdriver

How to turn off the Marionette/gecko driver logs in selenium 3

问题 我需要关闭 Marionette/GeckoDriver 日志记录; 有什么办法吗? 我一直在寻找很多,但我没有得到正确的答案。 INFO 日志是: 1484653905833 geckodriver INFO Listening on 127.0.0.1:15106 Jan 17, 2017 5:21:46 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end 1484653906715 mozprofile::profile INFO Using profile path C:\Users\vtiger\AppData\Local\Temp\3\rust_mozprofile.7d2LEwDKoE8J 1484653906720 geckodriver::marionette INFO Starting browser C:\Program Files\Mozilla Firefox\firefox.exe 1484653906731 geckodriver::marionette INFO Connecting to

2022-05-15 20:57:04    分类:技术分享    selenium   selenium-webdriver   gecko   geckodriver

Try Catch WebDriverTimeoutException does not work

问题 I have 2 catches within my try catch block, however the WebDriverTimeoutException does not get caught at all. The other exception is being caught correctly. The test fails on the timeout exception "OpenQA.Selenium.WebDriverTimeoutException :Timed out after 20 seconds" So why is that the WebDriverTimeoutException try catch is not being caught at all? public IWebElement FindElement(By howBy) { TimeSpan _elementTimeOut = TimeSpan.FromSeconds(20); IWebElement elementfound = null; WebDriverWait wait = new WebDriverWait(WebDriver, _elementTimeOut); wait.Until<IWebElement>(d => { try {

2022-05-15 18:27:09    分类:技术分享    c#   selenium-webdriver

Selenium 3 Firefox .click() not working

问题 由于我升级到最新的 Selenium 版本,我的 Firefox 驱动程序无法正常工作。 无法通过搜索 Google/Stack 找到答案我希望这里有人有答案。 我已经构建了一个页面对象模型,用于登录网页、单击管理站点并填写用户名/密码 + 提交。 此代码是为 Selenium 2.53.6 编写的,但仍适用于 IE 和 Chrome。 对我来说失败的部分是这行代码: driver.find_element_by_xpath(locators["login.open"]).click() 定位器是: locators["login.open"] = "//*[@href='//www.phptravels.net/admin']" 既然它在 IE 和 Chrome 中工作,那么让我感到困惑的是 Firefox 不能.click()了? 我的控制台中没有收到错误消息,它只是没有单击管理站点按钮。 这可能与 Selenium 3/geckodriver 的给定 Firefox 版本有关吗? 所有驱动程序都使用pip是最新的 我正在使用这个网站来练习我的 Selenium:http://phptravels.com/demo/ 编辑(1):我已经尝试使用 Firefox 版本 48 和 49 - 仍然无法正常工作 编辑(2):geckodriver 配置了 Firefox

2022-05-15 09:31:13    分类:技术分享    python-3.x   firefox   selenium-webdriver   geckodriver   selenium3

Selenium get all options from drop down in node.js

问题 如何使用 selenium 和 node.js 从下拉列表中获取所有选项 下面是我的代码: var dropdown = driver.findElement({xpath: '//*[@name="dropdownname"]'}); 从上面 var options = dropdown.findElements({tagName: 'option'}); 如何获取所有选项并在 node.js 中执行 foreach 或使用 node.js 打印选项值。 提前致谢。 回答1 driver.findElement({xpath: '//*[@name="dropdownnamewithoptions"]'}).then(function(webElement) { webElement.findElements(By.tagName('option')).then(function(optionArray){ if(optionArray.length > 1){ optionArray[0].getAttribute('value').then(function(optionValue) { }); } }); }, function(err) { });

2022-05-15 03:21:04    分类:技术分享    node.js   selenium-webdriver

how to close chrome browser popup dialog using selenium webdriver and python

问题 我有一个使用 selenium webdriver(以及 chromedriver)的 python 代码,用于登录 facebook 并截取页面的屏幕截图。 脚本本身按预期工作,但是,登录后,chrome 浏览器会显示一个有关 facebook 通知的对话框(Chrome 弹出窗口) 该对话框似乎是由浏览器生成的,而不是页面本身。 我无法识别和捕获元素或使用“切换到警报”方法。 我如何与此对话框交互(允许、关闭或关闭它)? 谢谢! 回答1 chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--disable-notifications") webdriver.Chrome(os.path.join(path, 'chromedriver'), chrome_options=chrome_options) 回答2 ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-popup-blocking"); options.addArguments("test-type"); ChromeDriver driver = new ChromeDriver(options);

2022-05-14 23:47:03    分类:技术分享    python   google-chrome   selenium-webdriver   selenium-chromedriver

Not able to drag and drop element to another element using Selenium-Webdriver

问题 我正在为以下拖放功能编写演示测试。[参考附件截图]为此,我编写了以下代码: @Test public void DragAndDropTest() { commonSteps(); WebElement drag = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[1]/div/div[1]")); WebElement drop = driver.findElement(By.xpath("html/body/div[1]/div[3]/div[2]/div[1]/div[4]/div[3]/div[1]/div[2]/div/div[1]")); Actions builder = new Actions(driver); Action dragAndDrop = builder.clickAndHold(drag).moveToElement(drop).release(drop).build(); dragAndDrop.perform(); } Webelement 拖动用于“立即”,WebElement 拖放用于“快速按下”。 我的代码能够找到这些元素,但不会将“立即”框架拖放到“快速按下”框架。 我也尝试单击拖动

2022-05-14 10:26:04    分类:技术分享    selenium-webdriver   drag-and-drop

In selenium webdriver what is manage() [driver.manage()]

问题 我的一个朋友问我一个问题,下面是最大化窗口的代码。 driver.manage().window().maximize(); 这里的manage()是什么? 据我所知, manage()是抽象方法。 请任何人解释以下行的含义,我们如何通过编写以下代码来使用maximize()方法: driver.manage().window().maximize(); 提前致谢 !! 回答1 manage() 返回接口Options的底层实现实例,它可以是 EventFiringOptions / RemoteWebDriverOptions。 选项使您可以访问浏览器的菜单。 选项的 JavaDocs 摘录: 用于管理您将在浏览器菜单中执行的操作的界面 回答2 根据您的问题,驱动程序是实现 WebDriver 接口的具体类的实例。 manage() 方法返回一个称为WebDriver.Options的“选项接口” 当您键入driver.manage() 时。 -> 为您提供访问方法列表。 前任。 您可以调用方法 window()-> driver.manage().window() 。 这将进一步返回用于管理窗口的接口,称为WebDriver.Window接口,用于管理当前窗口。 WebDriver.Window接口有一个名为Maximize()的方法。 可以使用以下代码调用它:

2022-05-14 10:14:08    分类:技术分享    selenium   selenium-webdriver