【发布时间】:2020-03-29 16:25:31
【问题描述】:
我正在尝试让 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-search://local-ntp/local-ntp.html' 的框架启动导航URL 'chrome-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
【问题讨论】:
-
对我来说,在 chrome 中,主页有一个 iframe。您可能需要先选择该 iframe:guru99.com/handling-iframes-selenium.html
-
这可能是一个安全问题。否则,网站可以将该页面加载到它自己的 iframe 中并获取信息。这是一个本地页面,不应通过外部 javascript 访问。您可以尝试使用“--no-sandbox”参数。
-
谢谢,但我已经启用了 no-sandbox 参数。
标签: c# selenium selenium-webdriver selenium-chromedriver