Selenium Chrome WebDriver如何实现水平滚动
Chrome Web驱动程序的限制仅加载正在查看的网页内容.我的网站有很长的水平表.我有XPATH,可以提取表的列标题,该列的伸展比屏幕宽度还要多.在Chrome Dev Tool Console中,如果我运行XPath $ X(myxpathgoeshere),我将获得所有标题,包括未查看的标题(可以让您滚动查看全部的标题).所以我知道我的xpath是正确的.但是在代码中,当我使用Selenium Webdriver访问它时,它仅给出当前视图中的标头名.我遇到了Chrome Webdriver Google Group页面上的各种帖子,用户提到了此限制,并且回答它是为了不解决它.因此,无论如何,现在我正在尝试使用JavaScript水平滚动,然后再次通过XPath进行Findelement,以查看右侧的元素是否已加载.但是由于某种奇怪的原因,我似乎无法水平滚动.我正在使用C#JavaScript executor. IJavaScriptExecutor js = (IJavaS
0 2024-04-23
编程技术问答社区
在Selenium测试后处理网络错误
问题 我在C#中为解决方案提供了很多介绍,但是它们都不为我工作. 我无法使用它们,因为缺少我无法导入的对象或对象被弃用. (例如,所需的能力) 我想做的 我要做的就是执行测试后,检查在测试期间出现问题是否出问题. 当出现问题时,测试应随消息失败. (断言) 这里的问题是我无法看到我想看到的日志. 我将展示我尝试的东西. 版本1: ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.SetLoggingPreference("performance", LogLevel.All); var logs = driver.Manage().Logs.GetLog("performance"); 这对我有用,但是这里的问题是我看不到真正的错. 消息输出只是向我表明某些错误发生了,但没有发生什么错误. 这是您可以看到的接受解决方案: 如何使用Chrome在Selen
0 2024-04-22
编程技术问答社区
在C#中用ChromeDriver获取网络信息
我正在尝试从C#中的Chromedriver启动的Chrome页面访问网络选项卡信息. . 我想至少要传输总数据和页面加载时间... 我一直在为设置不同的ChromeOptions和DesiredCapabilities而感到困惑,这是没有成功的.到目前为止,我唯一要工作的是执行脚本并将结果转换为长期. Convert.ToInt64(((IJavaScriptExecutor)ChromeDriver).ExecuteScript("return window.performance.timing.navigationStart")); 但是,如果可能的话,我想不这样做...谢谢! 解决方案 在这种情况下,其他人将来会看到这一点,我将分享一些信息.因为我目前也有DevTools的问题. 有一个官方指南如果您使用4.0 alpha如何与开发工具互动. 我将在此处共享我目前正在使用的狙击. IDevTools devTools = dri
在C# selenium测试运行时,打开Google Chrome开发者工具控制台,或以编程方式读取它
是否有一种方法可以告诉C#硒测试中的WebDriver打开Chrome Developer工具控制台,或者有其他方法可以在运行Selenium测试时打开控制台而不会破坏它们? 或能够编程读取输出到控制台的能力? 到现在为止. 解决方案 打开Chrome Console: var inSim = new WindowsInput.InputSimulator() inSim.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.LCONTROL); inSim.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.LSHIFT); inSim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.VK_J); inSim.Keyboard.KeyUp(WindowsInput.Native.VirtualKeyCod
6 2024-04-20
编程技术问答社区
无法在Selenium C#中获得Chrome性能日志
我在解决方案中使用以下Nuget软件包 selenium.webdriver -v3.141.0 selenium.webdriver.Chromedriver -v79.0.3945.3600 使用以下代码我正在创建Chrome Driver实例 ChromeOptions options = new ChromeOptions(); //Get Performance Logs from Network tab ChromePerformanceLoggingPreferences perfLogPrefs = new ChromePerformanceLoggingPreferences(); options.PerformanceLoggingPreferences = perfLogPrefs; options.SetLoggingPreference("performance", LogLevel.All); (或) ChromePerform
模拟键盘输入/插入字符串到文本区域(adwords)。
我正在尝试从https://adwords.google.com/ko/KeywordPlanner/Home刮擦关键字>使用 cefsharp (版本43) 我能够以编程方式登录AdWords门户. 但是,每当我尝试通过分配element.value,element.innerText和element.innerHtml将一些文本(搜索关键字)插入特定的textarea(id="gwt-debug-keywords-text-area")中时, var txtElem = document.getElementById("gwt-debug-keywords-text-area"); txtElem.addEventListener("keydown", onKeyPress, false); function onKeyPress(e) { alert(e.keyCode); } function triggerKeyboardEvent(el, key
0 2024-04-13
编程技术问答社区
浏览器中本地存储和缓存有什么区别?
当我们在Chrome开发人员控制台中打开应用程序段时,我们会看到许多类似: 应用程序 清单 服务工作者 存储 本地存储 会话存储 索引DB Web SQL cookies 缓存 缓存存储 应用程序缓存 我知道缓存用于在本地保存资源,而cookie则用于将数据保存在客户端以维护会话. 以钥匙值格式的缓存存储. 我想确切知道它们之间的区别. 解决方案 我的经验有限,但我能理解的是: 缓存是非常频繁使用的数据,因此将其存储以减少所需的处理和加载. 在计算机中,缓存是有助于保留处理器使用的临时数据以计算最基本的说明的.因此,它比RAM更快/更昂贵/更小,但是相同的意识形态. 在您的浏览器上,频繁数据是您从网页中获得的html和css之类的文件 本地存储相反,数据少少于通用,并且更具体的用户,例如表单信息或您已经在Google上出现在紫色上的已查看的页面,也是对象和数据和HTML渲染. 例如:在YouTu
8 2024-04-04
编程技术问答社区
在Chrome浏览器中,"正常重新加载"、"硬重新加载 "和 "清空缓存和硬重新加载 "之间有什么区别?
我最近在Chrome中发现了这一新功能: 我可以找出选项1和选项3之间的区别,而该选项2可能是介于两者之间的东西,但是我在任何地方都找不到更多精确的信息. 有人知道3个选项中的每一个的精确行为吗? 解决方案 正常重新加载 与按下 f5 一样.这将使用缓存,但在页面加载期间重新验证了所有内容,寻找"未修改"响应的" 304".如果浏览器可以避免重新下载缓存的JavaScript文件,图像,文本文件等. 硬重新加载 提出请求时不要使用缓存中的任何内容. (等于 shift + f5 无需打开开发人员控制台)强迫浏览器重新下载每个JavaScript文件,图像,文本文件等. 空的缓存和硬重新加载 显然,如果高速缓存为空,则必须进行硬重新加载.这将再次迫使浏览器重新下载所有内容.但是,如果该页面通过JavaScript进行任何事后下载,而不是页面加载的一部分,那么这些可能仍然使用缓存,而该缓存是清空缓存的地方,因为它可以确保即使这些都不会使用缓存文件
8 2024-04-04
编程技术问答社区
禁用Chrome浏览器缓存以促进网站发展
我正在修改站点的外观(CSS修改),但由于持续的缓存而无法看到Chrome上的结果.我尝试了 shift +刷新,但它不起作用. 如何以某种方式暂时禁用缓存或刷新页面? 解决方案 Chrome DevTools可以禁用缓存. 右键单击,然后选择Inspect Element打开DevTools.或使用以下键盘快捷方式: f12 控制+ shift + i 命令+ shift + i 单击 Network在工具栏中打开网络窗格. 检查 Disable cache顶部的复选框. 请记住,作为 Tweet . 请注意,这将导致所有资源正在重新加载.如果您只想仅用于某些资源禁用缓存,则可以修改HTTP标头您的服务器与文件一起发送. 如果您不想使用Disable cache复选框,则在DevTools Open 的刷新按钮上进行长按将显示一个菜单,其中包含Hard Reload或Empty Cache and Hard Reload的选项应该有类
8 2024-04-04
编程技术问答社区
浏览器检查员如何知道图片或其他资源属于哪个css或js文件而无法加载?
我可以在网页中看到一些没有加载原因的图像是CSS或JS文件内的错误路径,但是如何知道哪些JS或CSS文件正在尝试加载该资源.我在浏览器的检查员中尝试了太多方法以找到某种方法,但我无法找到任何方法,因此我必须搜索每个JS和CSS文件以获取资源名称.有什么方法可以知道试图加载失败资源的确切JS或CSS文件. 谢谢 解决方案 Firefox和Chrome DevTools提供了一种方法,可以查看其在其网络面板中启动资源的请求. chrome devtools Chrome devTools中的网络面板提供了有关 启动器列.除了在JavaScript,CSS或文档中说"其他"链接的所有条目,该条目引起了请求. 对于JavaScript调用,它显示了导致悬停请求的堆栈跟踪. 它甚至允许您 firefox devtools firefox devtools网络监视器具有列指示请求是否来自JavaScript,文档,CSS或其他来源. 对于JavaScript调
Chrome DevTools无法显示html标签中的 "checked "或 "checked="true "属性
在Chrome DevTools中,您如何知道是否检查了复选框或单选按钮.当您单击以上任何一个时,属性checked根本没有显示.这很烦人,因为我必须猜测正在发生的事情,并且友善的开发过程较慢.我需要应用一些设置吗? 解决方案 一个复选框具有两个讨论它的属性:一个是HTML/DOM属性,一个是脚本对象的属性. ( dom-input-checked 和 attry-noreferrer"> attry-input-checked ). 规格有时使用反映指示这两种属性保持同步,但在这种情况下不是:DOM属性是默认检查状态,而IDL属性是当前检查状态.例如,这允许"重置"表单. 属性不同的示例: console.log([a.checked, a.getAttribute("checked")]); a.checked = false; console.log([a.checked, a.getAttribute("checked")]); console
10 2024-04-03
编程技术问答社区
直到刷新才能应用CSS样式
我有一个具有以下CSS样式的网页,它覆盖了一些更高级别的样式. #pnlActions { background-image: -webkit-gradient(linear,left top,left bottom,from(#000),to(#000)); background-image: -webkit-linear-gradient(#000,#000); background-image: -moz-linear-gradient(#000,#000); background-image: -ms-linear-gradient(#000,#000); background-image: -o-linear-gradient(#000,#000); background-image: linear-gradient(#000,#000); } 奇怪的是,我第一次加载页面时,完全忽略了样式
4 2024-04-03
编程技术问答社区
chrome.browserAction.setIcon不做任何事情
我正在制作一个Chrome扩展名,并且扩展名具有两种模式:始终打开(alwaysOn),或者仅在用户单击它(onClick)时.我想根据用户的模式将图标更改为蓝色或红色,以便一眼就能看到它.但是,在添加chrome.browserAction.setIcon()行后,图标在需要时仍不会更改.它只是停留在默认徽标上. 这是我的背景: // Get the behavior of the plugin; the default is set to "onClick", the other option is "alwaysOn" chrome.storage.sync.get({ extensionBehavior: 'onClick' }, function(items) { if(items.extensionBehavior == 'onClick'){ chrome.browserAction.setIcon({path: "blue-logo
手机浏览器的安卓AVD仿真器开发工具?
我正在开发移动网络应用程序.我正在测试过各种设备,但是我没有的一种设备是运行Android 2.3.x的Android设备.我求助于通过Eclipse使用Android AVD模拟器. 使用模拟器进行测试是很好的,但是我的Web应用程序的几种CSS样式在Android 2.3.x Web浏览器中呈现出奇怪的呈现. 有什么方法可以使用AVD模拟器中的默认Android浏览器对CSS进行调试或实验?我不确定是否有可能以某种方式检查和更改浏览器中的CSS,以便我可以弄清楚问题是什么(类似于您对Chrome Dev Tools或Firebug的操作). 我已经读到,有一种方法可以使用Android的移动Chrome来执行此操作,它在台式机上与Chrome连接,然后您以这种方式进行调试...但是我不确定默认的Android 2.3.x浏览器. 解决方案 您可以从桌面上的Chrome连接到模拟的Android设备(例如,AVD从Android Studio启动),或USB连
10 2024-04-03
编程技术问答社区
当在浏览器的开发工具中暂停一条语句时,如何在该语句之后立即终止执行?
假设我有此功能: function test () { // statements 1 statement_X; // statements 2 } 我正在使用浏览器的开发工具来踏上语句.现在,当我在" statement_x"上停下来时,我想终止函数执行(我不希望执行函数的"语句2"部分),就好像" statement_x"立即紧随其后. return;语句. 我知道Chrome具有内联脚本编辑,因此我可以在暂停的语句之后手动添加返回语句,然后按CTRL+S重新执行整个内容,但是我也需要此功能,所以我是希望提供一般解决方案. 早期终止执行似乎是一件容易的事(对于浏览器),因此我希望开发工具具有这样的功能. 解决方案 我在IE 9中成功测试了它,因此我将其发布为答案:当在脚本调试器中暂停statement_X时,点击F10 SO statement_X仍执行,然后右键单击封闭函数的最后一行(带有右卷曲括号}的行终止功能主体),
2 2024-04-03
编程技术问答社区
如何用console.log省略文件/行号
在Chrome的控制台中,您可以写得很好.结帐 this 链接.我还制作了屏幕截图: 您也可以在屏幕截图中看到,文件名/行号(VM298:4)也写在右侧.是否有可能删除,因为在我的情况下,这是一个很长的名字,或多或少会打破我试图在控制台中产生的效果? 解决方案 这很容易做到.您将需要与console.log.bind: 使用setTimeout> setTimeout (console.log.bind (console, "This is a sentence.")); ,如果要应用CSS或其他文本,只需添加添加%c或任何其他%变量: setTimeout (console.log.bind (console, "%cThis is a sentence.", "font-weight: bold;")); var css = "text-decoration: underline;"; setTimeout (console.log.bind (conso
6 2024-04-03
编程技术问答社区
Chrome浏览器是否有一个内置的调用堆栈?
在Visual Studio中,我习惯了在任何断点处出现的呼叫堆栈. Chrome是否具有呼叫堆栈功能,我可以看到我的断点之前什么功能? 如果没有,是否有替代品(与Chrome一起使用的第三方解决方案?),开发人员使用哪些功能导致了断点? 编辑:要清楚,我期望呼叫堆栈出现在Chrome的JavaScript控制台中. 解决方案 我不知道您正在使用哪种版本的Chrome.我正在使用Chromium 17,而JavaScript调试器在击中断点时看起来像这样(重点是我的): 其他解决方案 打开开发人员工具(" Spanner" - >工具 - >开发人员工具),在右侧选择"脚本"选项卡,有一个称为"呼叫堆栈" 的部分 享受:d 其他解决方案 [版本66.0.3359.139]转到开发人员工具 - > sources->在右侧(调用堆栈). console.trace()//打印呼叫堆栈. https://devervemers.google
2 2024-04-03
编程技术问答社区
如何在谷歌浏览器中阻止页面自动刷新?
我想在Google Chrome中停止AutoreFresh页面,因为这是一个非常烦人和记忆消耗的问题,我无法使用开发人员工具.我正在尝试使用Chrome的开发人员工具从脚本中删除刷新和settimeout函数,但我没有结果.即使在控制台上一段时间我才能阻止此烦人的功能? 解决方案 由于使用DevTools删除不够(它不会停止页面刷新)我在控制台中执行了此代码: window.onbeforeunload = function(){ return 'Reload?';}. onbeforeunload活动将在重新加载之前开火,您将可以选择中止重新加载.根据我测试的对话框仅显示一次. 其他解决方案 您可以通过以下步骤简单地禁用页面自动刷新的功能: 打开镀铬浏览器选项卡 在您的地址栏中输入chrome://flags 搜索#automatic-tab-
2 2024-04-03
编程技术问答社区
WebDriver和DevTool协议之间的区别是什么?
我们知道WebDriver协议是用于自动化测试目的的设计.但是主要的浏览器也提供了DevTool协议.在某些情况下,DevTool协议可以实现更强大的交互和操作与WebDriver相比. 我的问题是为什么有两个不同的协议,这两个协议之间的主要区别是什么?是否有任何选择经验可以分享项目开发? 预先感谢! 参考: devtools https://learn.microsoft/Microsoft-Edge/devtools-protocol/ docs/backend/stoloption.md WebDriver: > Edge/Web Driver US/DOCS/MOZILLA/QA/MARIONETTE/WEBDRIVER chromedriver/downloads 解决方案 WebDriver WebDriver为我们提供了精心设计的面向对象的API,可以为通过动态网页创建的现代高级Web应用程序提供改进的支持.简而
2 2024-04-03
编程技术问答社区
是否有办法在Chrome的devtools中改变你的时区?
我已经在JavaScript中创建了一个工具,该工具确定当前的UTC时间,并检查其他预定日期是否已通过. 我想将浏览器更改为另一个时区,看看测试是否仍然通过,但我很难找到一种方法. 有没有办法在Chrome DevTools中进行此操作?如果没有,还有其他建议吗? 解决方案 要在Chrome Dev工具中执行此操作,您可以使用地理位置传感器仿真. 转到3点菜单,更多工具和传感器. 有一个地理位置下拉列表,其中一些常见位置,但您也可以更改首选的位置.为此,您可以选择其他... 在该下拉列表中,然后输入自定义时区ID 这是一个测试它的演示页面: https://mathiasbynens.be/demo/timezone/timezone 和一个显示过程的视频: https://wwww.youtube.com/watch? 其他解决方案 2020 Update :请参阅另一个答案,其中显示了功能请求我向Chromium提交了一种覆盖时区的方法.
4 2024-04-03
编程技术问答社区