【问题标题】:Selenium Python: Invalid Selector in find_element_by_css_selectorSelenium Python:find_element_by_css_selector 中的无效选择器
【发布时间】:2018-11-08 16:18:02
【问题描述】:

我正在使用 selenium-webdriver 构建一个 python3 网络机器人,但对 selenium 没有太多经验。由于这行代码,我收到一个异常“selenium.common.exceptions.InvalidSelectorException:消息:无效选择器:指定了无效或非法选择器”:

browser.find_element_by_css_selector("button[ng-click='$ctrl.login('gatorlink')']").click();

我相当肯定它与字符串“gatorlink”周围的单引号有关,但我真的不确定。我知道选择器不正确。这是我要点击的按钮。

<button class="md-button md-ink-ripple" type="button" ng-transclude="" ng-click="$ctrl.login('gatorlink')" role="menuitem">
<md-icon class="ng-scope material-icons" role="img" aria-label="exit_to_app">exit_to_app</md-icon>
<span class="ng-scope">Log in with GatorLink</span>
</button>

它在一个下拉菜单中,我可以打开菜单,但现在不能点击这个按钮。

【问题讨论】:

  • ng-click 是 Angular 的一个属性,我怀疑它会像这样工作。你检查this了吗?
  • 我对其他按钮使用了 ng-click 并且效果很好 - 这就是为什么这让我陷入了循环。
  • 对不起!我之前没有仔细看,但引号似乎有问题。你可以试试这个:browser.find_element_by_css_selector("button[ng-click=\"$ctrl.login('gatorlink')\"]").click();
  • @Samarth 这样,我得到了一个 ElementNotVisibleException。这是因为这个按钮属于下拉菜单吗?您的代码找到了该按钮,但它说它不是“可交互的”
  • @hodsonus 这听起来像X-Y problem。与其寻求解决问题的帮助,不如编辑您的问题并询问实际问题。你想做什么?

标签: python selenium selenium-webdriver


【解决方案1】:

单引号内有单引号,这是无效的选择器。

您需要转义单引号。

browser.find_element_by_css_selector("button[ng-click='$ctrl.login(\\'gatorlink\\')']").click()

它现在可以工作并找到元素。

【讨论】:

  • 点击答案旁边的勾号接受答案
【解决方案2】:

尝试使用定位器作为browser.find_element_by_css_selector(button.md-button md-ink-ripple).click();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 2020-11-11
    • 2015-11-12
    • 1970-01-01
    • 2020-05-22
    • 2020-06-05
    • 2021-10-21
    • 1970-01-01
    相关资源
    最近更新 更多