Selenium无法通过XPath识别元素 - javascript

很抱歉创建一个与此相关的主题,但是在过去的2个小时里,这件小事一直困扰着我。 Chrome通过Xpath和javascript脚本返回正确的元素,但是Selenium告诉我,在代码中,Chrome运行得很好是一个错误:

  JavaScript错误:参数列表后缺少)

这是我目前正在尝试的代码:

    driver.execute_script('let clickable = document.evaluate("//a[contains(@onclick,\"openFbLWin\")]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; clickable.click();')

我知道它有点混乱,但是总体上最重要的是// a [包含(@onclick,\“ openFbLWin \”)]
至于XPath选择器。

参考方案

我认为这是因为在python中运行时,它会将"//a[contains(@onclick,\"openFbLWin\")]"转换为"//a[contains(@onclick,"openFbLWin")]",而没有斜杠。然后,当它在javascript中运行时,它不能解析该字符串,因为另一个双引号中有一个双引号。要解决此问题,请将xPath更改为"//a[contains(@onclick,'openFbLWin')]"

不过,您应该使用selenium的内置搜索和单击工具。它更具可读性和速度(使用find_element_by_xpath和click)

Selenium:如何使RemoteDriver始终附加到当前的浏览器选项卡? - javascript

我正在开发一个Windows应用程序,该应用程序可以通过语音命令操纵浏览器。我想适当地处理用户添加一些标签并根据需要更改所选标签的情况。事实证明,RemoteDriver仅与一个选项卡一起使用,并且可以通过提供选项卡手柄将焦点切换到另一个选项卡。但是我不知道如何获取选定的选项卡句柄并始终检查选定的选项卡是否已更改,或者是否存在始终与选定的选项卡一起使用的方法…

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…

Python Selenium:无法单击按钮 - javascript

我是python的新手,并且想编写一个网络抓取工具,其中涉及在弹出窗口中单击鼠标“确定”按钮。其他一切都进行得很好,但是我无法单击最终按钮,导致数据下载。javascript如下:我尝试通过ID查找元素,但出现以下错误消息: 参考方案 find_elements_by_id返回元素列表。遍历find_elements_by_id返回的列表,或使用find_e…

Javascript-Urls的奇怪字符串比较行为 - javascript

最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com‏/&#…

Python Selenium:单击下拉菜单中的选项时可以更改值吗? - javascript

我正在使用python硒进行一些搜索。在我查询的一个网页上,搜索对话框允许我通过下拉菜单指定是否要搜索所有部分或特定部分。要选择哪个部分,该站点在弹出窗口中有一些单独的对话框,我可以单击一个部分,然后在内部为下拉菜单中的“此部分”选项分配选定部分的值。这是检查选择器时的外观: <select ...> <option id="se…