selenium-webdriver使用NodeJS+ Selenium+Mocha安装的理想位置是什么(在Windows上)
我刚开始用Selenium探索NodeJS.继续我将使用NodeJS + Selenium + Mocha
已安装node.js:
C:\Users\AtechM_03>node -v
v6.11.2
Run Code Online (Sandbox Code Playgroud)已安装npm:
C:\Users\AtechM_03>npm -v
3.10.10
Run Code Online (Sandbox Code Playgroud)nodeclipse根据http://www.nodeclipse.org/updates/我和我的项目结构配置如下:
现在,我不确定要安装的确切位置 selenium-webdriver
selenium-webdriver根据(http://www.nodeclipse.org/updates/)安装在默认位置(通过命令行)
C:\Users\AtechM_03>npm install selenium-webdriver
C:\Users\AtechM_03
`-- selenium-webdriver@3.5.0
+-- jszip@3.1.3
| +-- core-js@2.3.0
| +-- es6-promise@3.0.2
| +-- lie@3.1.1
| | `-- immediate@3.0.6
| +-- pako@1.0.5
| `-- readable-stream@2.0.6
| +-- core-util-is@1.0.2
| +-- inherits@2.0.3
| +-- isarray@1.0.0
| +-- process-nextick-args@1.0.7
| +-- string_decoder@0.10.31
| `-- util-deprecate@1.0.2 …Run Code Online (Sandbox Code Playgroud)由于某些未知原因,我的浏览器非常缓慢地打开了远程服务器的测试页。因此,我在考虑是否可以在退出脚本后重新连接到浏览器,但不执行webdriver.quit()此操作将使浏览器保持打开状态。这可能是HOOK或Webdriver句柄。我查找了硒API文档,但未找到任何功能。我正在使用Chrome 62,x64,Windows 7,硒3.8.0。能否解决这个问题,我将不胜感激。
有一个测试,像:
import //needed imports
public class TestClass{
WebDriver driver;
@Before
public void setUp() {
//some code
}
@Test
public void test1() {
//some code, including init of driver (geckodriver)
}
//@After
// public void tearDown() {
// driver.quit();
//}
}
Run Code Online (Sandbox Code Playgroud)
所以,我使用firefox实例,使用geckodriver并成功运行我的测试.但是我希望不要在每次运行后关闭firefox窗口,因为我只想分析我拥有的东西,并在测试运行后修复任何需要的东西(我将在稍后的unComment driver.quit()).同时,每次调用而不关闭驱动程序会导致我的PC上的RAM过度影响(并且无关紧要 - 我是否在测试后手动关闭浏览器):

所以,问题是:是否有任何方法可以关闭"geckodriver"的进程(更确切地说 - 执行smth,这将关闭taskmgr中的geckodriver.exe进程),但是在测试完成后不会关闭浏览器?例如,在测试本身添加一些方法,无论如何......这不会影响我的工作/测试本身,我只想添加一些优化.
我正在使用selenium使用以下命令运行chrome headless:
system "LC_ALL=C google-chrome --headless --enable-logging --hide-scrollbars --remote-debugging-port=#{debug_port} --remote-debugging-address=0.0.0.0 --disable-gpu --no-sandbox --ignore-certificate-errors &"
Run Code Online (Sandbox Code Playgroud)
然而,看起来Chrome无头消耗了太多的内存和CPU,任何人都知道如何限制chrome无头的CPU /内存使用量?或者,如果有一些解决方法.
提前致谢.
selenium google-chrome headless headless-browser google-chrome-headless
我有硒chromedriver的问题,我无法弄清楚是什么导致它.几周前一切正常,但突然出现这个错误.问题来自以下功能.
def login_(browser):
try:
browser.get("some_url")
# user credentials
user = browser.find_element_by_xpath('//*[@id="username"]')
user.send_keys(config('user'))
password = browser.find_element_by_xpath('//*[@id="password"]')
password.send_keys(config('pass'))
login = browser.find_element_by_xpath('/html/body/div[1]/div/button')
login.send_keys("\n")
time.sleep(1)
sidebar = browser.find_element_by_xpath('//*[@id="sidebar"]/ul/li[1]/a')
sidebar.send_keys("\n")
app_submit = browser.find_element_by_xpath('//*[@id="sidebar"]/ul/li[1]/ul/li[1]/a')
app_submit.send_keys("\n")
except TimeoutException or NoSuchElementException:
raise LoginException
Run Code Online (Sandbox Code Playgroud)
此功能在开发环境(macOS 10.11)中没有问题,但在生产环境中引发以下错误:
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="sidebar"]/ul/li[1]/a"}
(Session info: headless chrome=67.0.3396.79)
(Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee97XXX),platform=Linux 4.4.0-116-generic x86_64)
Run Code Online (Sandbox Code Playgroud)
我已经在每个环境中更新了Chrome和chromedriver(分别为v67和2.40).我也给了它更多time.sleep(15).但问题仍然存在.我最新的猜测是,webdriver的初始化可能无法正常工作:
def initiate_webdriver():
option = webdriver.ChromeOptions()
option.binary_location = config('GOOGLE_CHROME_BIN')
option.add_argument('--disable-gpu')
option.add_argument('window-size=1600,900')
option.add_argument('--no-sandbox')
if not config('DEBUG', cast=bool):
display = Display(visible=0, size=(1600, 900))
display.start() …Run Code Online (Sandbox Code Playgroud) python selenium selenium-chromedriver selenium-webdriver webdriverwait
我们使用的是Chrome版本70.0.3538.67(官方版本)(64位),ChromeDriver 2.43.600229.Chrome窗口出现,但网址停留在"data:,".(下面的堆栈跟踪)
我们找到了使用Chrome版本69 w/chromedriver 2.43的解决方法,但Chrome仍然坚持要更新自己.
我们运行Selenium-java 3.4,htmlunit-driver 2.27,testng 6.9.4,junit 4.7 with maven-compiler-plugin 3.6.1,maven-surefire-plugin 2.22.0.
org.openqa.selenium.WebDriverException: unknown error: failed to change window state to maximized, current state is normal
(Session info: chrome=70.0.3538.67)
(Driver info: chromedriver=2.43.600229 (3fae4d0cda5334b4f533bede5a4787f7b832d052),platform=Mac OS X 10.13.6 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 107 milliseconds
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'edited', ip: 'edited', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '1.8.0_131'
Driver info: …Run Code Online (Sandbox Code Playgroud) 我需要帮助。有网址:https://www.inipec.gov.it/cerca-pec/-/pecs/companies。我需要点击复选框验证码:

我的代码看起来像:
import os, urllib.request, requests, datetime, time, random, ssl, json, codecs, csv, urllib
from urllib.request import Request, urlopen
from urllib.request import urlretrieve
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoAlertPresentException
from selenium.webdriver.chrome.options import Options
chromedriver = "chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chrome_options)
driver.get("https://www.inipec.gov.it/cerca-pec/-/pecs/companies")
driver.switch_to_default_content()
element = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 selenium 开发工具 java API,对于多种 API 方法,我得到了java.util.concurrent.TimeoutException.
例如,我正在尝试使用Network.clearBrowserCache,它应该可以根据 chromedriver 文档工作:https ://chromedevtools.github.io/devtools-protocol/tot/Network/
我正在clearBrowserCache使用以下代码调用:
chromeDriver.getDevTools().send(Network.clearBrowserCache())
它失败了,但同时如果我使用其他类似这样的 devTools 命令:
chromeDriver.getDevTools().send(Browser.getVersion())
它正确返回数据。
java selenium google-chrome-devtools selenium-chromedriver selenium4
我正在使用硒来抓取一些数据。
我点击的页面上有一个按钮说“custom_cols”。此按钮为我打开一个窗口,我可以在其中选择我的列。
这个新窗口有时需要一些时间才能打开(大约 5 秒)。所以为了处理这个我用过
WebDriverWait
Run Code Online (Sandbox Code Playgroud)
延迟为 20 秒。但有时它无法在新窗口中选择查找元素,即使该元素可见。这种情况只有十次发生一次,其余时间它都可以正常工作。
我也在其他地方使用了相同的功能(WebDriverWait),它按预期工作。我的意思是它会等到元素可见,然后在找到它的那一刻点击它。
我的问题是为什么即使我正在等待元素可见,新窗口上的元素也不可见。要在这里添加,我试图增加延迟时间,但我仍然偶尔会遇到该错误。
我的代码在这里
def wait_for_elem_xpath(self, delay = None, xpath = ""):
if delay is None:
delay = self.delay
try:
myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))
except TimeoutException:
print ("xpath: Loading took too much time!")
return myElem
select_all_performance = '//*[@id="mks"]/body/div[7]/div[2]/div/div/div/div/div[2]/div/div[2]/div[2]/div/div[1]/div[1]/section/header/div'
self.wait_for_elem_xpath(xpath = select_all_performance).click()
Run Code Online (Sandbox Code Playgroud) python selenium web-scraping webdriverwait expected-condition
我正在尝试使用带有ChromeDriver的硒在本地主机(没有HTTPS)上运行集成测试。
Chrome需要使用https证书,但是根据这个问题,我知道我可以使用arg来绕过它--ignore-certificate-errors
我也增加了自己的功能acceptInsecureCerts,因为这似乎是适当的做法(docs)
chromedriver的响应仍然不是我所期望的:
该网站无法提供安全连接,应用发送的响应无效。ERR_SSL_PROTOCOL_ERROR
我的代码如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# make options (principally to ignore certificate)
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
# add acceptInsecureCerts
capabilities = options.to_capabilities()
capabilities['acceptInsecureCerts'] = True
print(capabilities) # see below
driver = webdriver.Remote(
command_executor=SELENIUM_HUB,
desired_capabilities=capabilities
)
print(driver.__dict__) # see further below
app_login_url = 'http://app:8000/accounts/login/'
driver.get(app_login_url)
Run Code Online (Sandbox Code Playgroud)
我的能力:
{'acceptInsecureCerts': True,
'browserName': 'chrome',
'goog:chromeOptions': {'args': ['--ignore-certificate-errors'],
'extensions': []},
'platform': 'ANY',
'version': ''}
Run Code Online (Sandbox Code Playgroud)
这是我的驱动程序信息,似乎只acceptInsecureCerts考虑了arg:
{'_file_detector': <selenium.webdriver.remote.file_detector.LocalFileDetector object …Run Code Online (Sandbox Code Playgroud) python selenium google-chrome selenium-grid selenium-chromedriver
selenium ×10
python ×5
java ×3
webdriver ×2
firefox ×1
geckodriver ×1
headless ×1
javascript ×1
macos ×1
mocha.js ×1
node.js ×1
python-3.x ×1
recaptcha ×1
selenium4 ×1
session ×1
web-scraping ×1