问题标签 [expected-condition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
249 浏览

python - Python Selenium:如何在预期条件下应用“与”逻辑运算符

基本上,我想做的是在https://www.ssrn.com/index.cfm/en/中搜索一个名称,然后单击一些部分匹配的名称。例如,我想搜索“John Doe”。SSRN 将返回在其作者列表中包含 John Doe 的论文列表。下面是我尝试这样做的代码。

如果 John Doe 完全匹配,即作者列表看起来像 (John Doe, x, y, z),它会起作用。如果 John Doe 是部分匹配并且没有其他部分匹配,则它有效,即作者列表看起来像 (John M. Doe, x, y, z)。但是,如果有多个部分匹配,它会中断。例如,如果列表看起来像 (Jane Doe, John Doe, y, z)。然后,我的代码将选择 Jane Doe。我想我想要类似于 Java 的 EC.and() 的东西,但我不确定如何实现它,或者是否有更好的方法来做到这一点。谢谢!

0 投票
3 回答
54 浏览

selenium - 通过前面元素的值定位一个元素 - Selenium

我想根据前一个 td --> 143753 的值来定位输入,考虑到我会将值 143753 放入变量中,因此我可以选择我想要选择的任何行。

此屏幕截图将使我想要做的更清楚:

此屏幕截图将使我想做的事情更加清晰

我的尝试:

0 投票
1 回答
400 浏览

python - 使用 Selenium python,在等待隐藏的 btn 出现并可以点击时是否需要刷新页面?

我正在尝试制作一个小程序,它在隐藏按钮处查看网页(在类中使用隐藏)并等待它在单击之前可单击。代码如下。我想知道WebDriverWaitandelement_to_be_clickable函数是否已经通过刷新,或者我是否必须手动刷新页面。

首先,我不确定仅通过类名减去“隐藏”部分搜索是否真的会找到正确的元素,但更大的问题是我不知道按钮是否只有在刷新页面后才可见. 如果我需要刷新,那会很烦人,因为大多数网站在发现机器人正在访问该网站时都会为 Firefox 或 Chrome 提供额外的验证码。(这就是为什么我有最初的睡眠:这样我就可以先手动完成任何验证码)

那么,我是否需要刷新我的代码,或者没有它会好吗?如果我确实需要它,我该如何实现它?我只是像这样添加它:

很抱歉,如果这已经在其他地方得到了回答,我搜索了一堆,但我还没有在这个网站上找到答案。

0 投票
2 回答
166 浏览

python - Selenium webdriverwait (.text_to_be_present _in_element 没有) 似乎工作,我找不到任何解决方案

下面是我从网上抓取的完整的 html 元素

如您所见,我正在选择一个 20 秒倒计时 html 计时器代码,这里的问题是我在下面编写的代码似乎不起作用。当计时器达到 15.28 秒时。我想打印出来。

WebDriverWaiting 30 秒后,即使计时器在我的屏幕上滚动过去,它也找不到我想要打印的文本。然后它给出一个 TimeoutException 错误。

0 投票
4 回答
334 浏览

java - Selenium - 元素是可点击的,但点击仍然失败

这是我的代码

网址https://win.milwaukeetool.eu/#

elementToBeClickable工作(我也尝试过不同版本visible和其他替代方案),没有抛出异常。click也可以,但是单击不会触发任何内容。最后,-while条件也是true

发生的情况是页面加载(在上面的代码之外),可点击满足,点击不抛出异常,while-condition 大于 0(如果点击有效,新页面将加载并且它会为0),然后重新开始。

屏幕尺寸 1440 x 900-23 (23 = 菜单栏高度) xpLand =//img [@src='/img/countries/se.svg']

奇怪的是,它大约有一半的时间可以工作,但另一半却失败了(我只运行了大约 400 次,它每次都工作并失败了大约 200 次)。如果我在代码卡住时手动单击链接,则单击会导致预期结果。

就像它有时会卡住一样。我有一个外循环(上面看不到),它使用同一个驱动程序运行十次,然后启动一个新驱动程序。如果它“卡住”了,在这十个循环完成并启动新驱动程序之前,它将无法再次工作。然后它可能会工作 5-10 次,直到它再次卡住。

使用 Chrome/chromedriver。

0 投票
2 回答
907 浏览

python - selenium.common.exceptions.InvalidArgumentException:消息:无效参数:“使用”必须是使用等待和预期条件的字符串

我正在使用 Python 3.7 和 Selenium 3.141.0。在加载缓慢的页面上,使用这样的代码来捕获 DOM 对象通常会有所帮助:

该代码在整个页面中搜索<div>具有 class 的元素myClass。但有时我只想presence_of_element_located()在给定的 WebElement 对象中使用搜索。例如,基于上面的代码,我想运行这样的代码:

第二个代码块不起作用;我收到一条错误消息,可以理解地告诉我,这presence_of_element_located()不是 WebElement 对象的方法。如果我替换myDiv.presence_of_element_located()myDiv.find_element(). 在这种情况下,我收到一条无效参数消息:

有没有办法使用等待和预期条件来测试元素的存在,或者以其他方式搜索元素,同时将搜索限制为 WebElement 对象,例如myDiv?从某种意义上说,这可以通过编写复杂的 CSS 或 Xpath 选择器来完成——但我想避免这种情况。

我已经检查了 SO 帖子和Selenium documentation of expected conditions,但我没有找到任何与这个问题相关的内容。

0 投票
1 回答
803 浏览

python - __init__() 接受 2 个位置参数,但给出了 3 个尝试使用 presence_of_element_located() 等待元素

日志向我抛出这个:

代码试验:

我已经尝试过这个:

但也不起作用,因为:

0 投票
1 回答
222 浏览

java - Java Selenium - ExpectedCopnditions 存在通过但可见性失败

我不明白.. 我已经搜索了 2 天的答案,但我找不到解决这个问题的单一解决方案。

代码如下所示(在 try catch 块中):

单独的 try catch 块:

这也显示为 FALSE:

这失败了:

现在,当元素在屏幕上可见并且如果我这样做可以单击时,PRESENCE 如何/为什么通过并且 VISIBILITY 失败:

所以基本上,元素是可见的并且元素是可交互的,但是“检查是否可见”失败并出现异常。

看到对“可见性”的检查基本上是在寻找元素的高度和宽度,我决定也通过以下方式手动检查:

这两个值都是 0(但我可以在屏幕上看到该元素)。

编辑:

那么,如果这些标准方法不起作用,我该如何确定元素是否可见?

当前元素属性:

在此处输入图像描述

已经检查了这些帖子:

预期条件失败:等待 By.xpath 定位的元素的可见性

Selenium webdriver 问题:预期条件失败:等待位于 (..) 的元素的可见性

https://sqa.stackexchange.com/questions/24459/selenium-webdriver-tests-sometimes-doesnt-find-elements

硒:硒如何识别可见或不可见的元素?是否有可能在 DOM 中加载但未在 UI 上呈现?

Selenium 中的 isDisplayed() 与 isVisible()

0 投票
2 回答
197 浏览

java - 显示进度条时如何暂停 Selenium 执行

我有一个我想自动化的 Angular SPA 应用程序。当显示此进度条时:

我想全局暂停 Java 代码的执行。如果这个 div 是可见的,是否可以以某种方式暂停 Selenium?

0 投票
1 回答
396 浏览

python - 无法单击单选按钮,出现“ElementClickInterceptedException”错误

尝试在 python 中使用 selenium Webdriver 单击单选按钮时出现以下错误

以下是我的代码 页网址:https ://demoqa.com/automation-practice-form

有没有办法解决这个问题?我尝试了多种方法,但无法执行任务。