首页 > 解决方案 > C# Selenium Chrome 单击默认 chrome 主页中的链接

问题描述

我试图让 Selenium 点击默认 Chrome 网页中访问量最大的网络链接之一。

问题是 Selenium 无法在页面上找到该元素,我认为这与网页在技术上没有加载这一事实有关。当您打开 Chrome 时,那里有 HTML 元素,但地址栏完全是空的。我想这可能就是 Selenium 找不到链接的原因?代码很简单,找到 XPATH 不是问题。我只是不知道这是否是 Selenium 能够做到的功能。我正在尝试单击,因为当我输入代理信息时,navigation() 函数将不起作用,因为 Selenium 没有内置方法来处理带有用户名和密码的代理。

在一天结束时,我试图通过单击链接来弹出用户名/密码框。当我以编程方式使用 Selenium 打开浏览器然后手动单击链接时,会弹出用户名/密码框。但我无法让 Selenium 以编程方式找到要单击的元素。

var did = driver.FindElement(By.XPath("//*[@id='mv-tiles']/a[1]"));
did.Click();

米

更新 1:考虑到 iframe 时,我能够找到该元素,但单击仍然是一个问题。

var frm = driver.SwitchTo().Frame("mv-single");
var did = frm.FindElement(By.XPath("//*[@id='mv-tiles']/a[1]"));
//did.Click(); <-- I can see it go to the element but nothing occurs
IJavaScriptExecutor js2 = (IJavaScriptExecutor) driver;
js2.ExecuteScript("arguments[0].click();", did); 

JavaScriptExecuter 能够单击该元素,但 Chrome 会阻止重定向并显示以下消息:

[21040:24704:1204/150143.743:ERROR:CONSOLE(1)]“不安全的 JavaScript 尝试从 URL 为 chrome 的框架中为 URL 为 chrome-search://local-ntp/local-ntp.html 的框架启动导航-search://most-visited/single.html?title=Most%20visited&removeTooltip=Don%27t%20show%20on%20this%20page&enableCustomLinks=1&addLink=Add%20shortcut&addLinkTooltip=Add%20shortcut&editLinkTooltip=Edit%20shortcut'. 试图导航的框架正在瞄准其顶级窗口,但既不与目标同源,也未收到用户手势。请参阅https://www.chromestatus.com/features/5851021045661696。“,来源:(1)

最后更新:我放弃并决定为带密码的代理做浏览器扩展解决方案:https ://stackoverflow.com/a/35293222/5415162

标签: c#seleniumselenium-webdriverselenium-chromedriver

解决方案


“最近的页面”列表实际上在一个 中iframe,这可能是 Selenium 找不到它的原因。尝试更新选择器以考虑iframe,或者添加等待子句以允许iframe完成加载。

无论采用哪种解决方案,我认为它的行为与仅导航到目标 URL 没有什么不同。因此,为了解决您的根本问题,您是否尝试在创建时设置代理详细信息ChromeOptions


推荐阅读