【问题标题】:Selenium Web-Driver can't find element (Selenium IDE does find it)Selenium Web-Driver 找不到元素(Selenium IDE 确实找到了它)
【发布时间】:2020-02-17 08:58:21
【问题描述】:

我在使用我的代码查找元素(要单击的按钮)时遇到问题。我正在使用 Selenium IDE 来查找元素的 xpath 或 css 选择器。奇怪的是 Selenium IDE 确实找到了它,但我的代码没有。

我要选择的元素是一个按钮,单击时会出现一个下拉菜单,我需要单击另一个按钮。

  1. 按钮(按钮 class="js-select uk-button uk-button--select">)
  2. Button(li data-field="sapOrderNumber">Auftragsnummer

这是我要选择的类的html:

<div class="uk-button-dropdown uk-margin-right" data-uk-dropdown="{mode:'click'}" aria-haspopup="true" aria-expanded="false">
        <button class="js-select uk-button uk-button--select">
            <span>Filter auswählen</span>
            <i class="icon-arrow-left"></i>
        </button>
        <div class="uk-dropdown uk-dropdown-close uk-dropdown-bottom uk-dropdown--select" aria-hidden="true">
            <ul class="js-filter-select uk-nav uk-nav--select">
                    <li data-field="articleNumber">Artikelnummer</li>
                    <li data-field="dateRange">Zeitraum</li>
                    <li data-field="sapOrderNumber">Auftragsnummer</li>
                    <li data-field="personalReference">persönliche Referenz</li>
                    <li data-field="shipTo">Lieferadresse</li>
                    <li data-field="orderType">Auftragsart</li>
            </ul>
        </div>
    </div>

Selenium IDE 的屏幕截图(Selenium IDE 确实找到并单击按钮)1

我已尝试使用以下代码查找元素:

driver.find_element_by_xpath("//ul[@id='tabs-orderbook']/li/div/div/div/div/div/button").click()
driver.find_element_by_xpath("//button").click()
driver.find_element_by_css_selector(.uk-margin-right > .js-select").click()

这是我得到的错误信息:

NoSuchElementException: 没有这样的元素: 无法定位元素: {"method":"xpath","selector":"//ul[@id='tabs-orderbook']/li/div/div/div/ div/div/按钮"}

我已经寻找了很长一段时间的答案并且感到沮丧。如果有任何帮助或提示,我将不胜感激。

我正在使用 Chrome(版本 77.0.3865.120)、chrome webdriver(版本 77.0.3865.40)、selenium(版本 3.141.0)

ps。这是我关于堆栈溢出的第一个问题,所以如果您对我如何提问有任何提示,我也将非常感激。

非常感谢,祝您有美好的一天。 :D

【问题讨论】:

  • 请注明 Selenium 版本、浏览器名称、版本和使用的驱动程序版本。
  • 您是否尝试在点击之间添加暂停?很多时候,打开下拉菜单的动画比运行测试慢,所以你需要添加某种等待

标签: python html selenium selenium-webdriver


【解决方案1】:

据我了解,您想选择类名为“js-select uk-button uk-button--select”的按钮。下面是它的 xpath,

//button[contains(@class, 'js-select uk-button uk-button--select')]

对于选择下面的下拉值是xpath,

//li[contains(text(), 'Auftragsnummer')]

【讨论】:

  • 感谢回答:还是不行,我发现这个xpath (//button[contains(@class, 'js-select uk-button uk-button--select') ]) 在点击后被更改,在点击之前它出现在末尾没有 --select
  • 嗨..不需要提及完整的类名..这个xpath也可以用来查找部分文本。跟随xpath仍然检测到按钮而不提及--select,//button[contains (@class, 'js-select uk-button uk-button')]
猜你喜欢
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2021-03-14
相关资源
最近更新 更多