selenium 相关问题

Selenium是一种流行的开源工具,用于自动化Web浏览器。使用此标记时,还要包含您正在使用的特定组件的其他标记,例如selenium-webdriver用于语言绑定,selenium-ide,selenium-grid等。

如何在Python中使用slenium来点击按钮?

我尝试找到如何单击按钮以使用selenium中的python接受cookie, 我用了很多劝告但没有任何效果:( 这是元素: 我尝试找到如何单击按钮以使用selenium中的python接受cookie, 我用了很多劝告,但没有任何效果:( 这是元素: <button class="button primary cookie-button" ng-click="$ctrl.allowAllCookies()"> <span class="ng-binding">Todas las cookies</span> </button> 我用在其他: wait = WebDriverWait(driver, 5) time.sleep(2) wait.until(EC.presence_of_element_located((By.ID, "onetrust-banner-sdk"))) element = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="onetrust-accept-btn-handler"]'))) element.click() 这是按钮的所有代码: <div class="text-center cookie-controls"> <button class="button primary cookie-button" ng-click="$ctrl.allowCookiesSelection()"> <span class="ng-binding">Permitir selección</span> </button> <button class="button primary cookie-button" ng-click="$ctrl.allowAllCookies()"> <span class="ng-binding">Todas las cookies</span> 但是现在我没有id可以使用,我不知道如何使用。 根据您在问题中呈现的 XML,您可以使用多个 XPath 定位器找到此按钮。 例如尝试这个: wait = WebDriverWait(driver, 20) wait.until(EC.element_to_be_clickable((By.XPATH, '//button[contains(@ng-click,"allowAllCookies")]'))).click() 另一种方法如下: buttons = driver.find_element(By.TAGNAME, 'button') for button in buttons: if button.text() == 'Accept Cookies' cookies_Button = button cookies_Button.click() 上面的代码应该返回所有按钮,并且 for 语句将循环遍历它们,查找任何读取 Accept Cookies 的按钮。

回答 2 投票 0

WebDriver等待find_elements_by_xpath

我试图弄清楚 WebDriverWait 如何与 find_elements_by_xpath 一起使用。它如何知道所有相关元素已加载,或者只是等待页面加载。 我可以理解如果...

回答 3 投票 0

机器人框架未在詹金斯上运行

我正在尝试在本地詹金斯上运行机器人框架。当我在本地运行机器人框架时,它工作得很好,但是当我尝试使用 Jenkin 运行它时,它根本不起作用并给出这个错误......

回答 3 投票 0

如何获取仅在页面中可见的webElements列表

我想获取当前出现在页面上的元素列表,因为某些内容隐藏在我不想访问的页面中。

回答 3 投票 0

无法定位元素:{"method":"link text","selector":"Sales Matrix"} SELENIUM 和 JAVA - JavascriptExecutor

我有一个带有可折叠动作的按钮: 它包含以下信息: 我有这个带有可折叠动作的按钮: 它包含以下信息: <strong data-bind="css: {'admin__collapsible-title': collapsible, title: !collapsible, '_changed': changed, '_loading': loading, '_error': error}" class="admin__collapsible-title"> <span data-bind="i18n: label">Sales Matrix</span> <!-- ko if: collapsible --><span class="admin__page-nav-item-messages"> <span class="admin__page-nav-item-message _changed"> <span class="admin__page-nav-item-message-icon"></span> <span class="admin__page-nav-item-message-tooltip" data-bind="i18n: 'Changes have been made to this section that have not been saved.'">Changes have been made to this section that have not been saved.</span> </span> <span class="admin__page-nav-item-message _error"> <span class="admin__page-nav-item-message-icon"></span> <span class="admin__page-nav-item-message-tooltip" data-bind="i18n: 'This tab contains invalid data. Please resolve this before saving.'">This tab contains invalid data. Please resolve this before saving.</span> </span> <span class="admin__page-nav-item-message-loader"> <span class="spinner"> <!-- ko repeat: 8 --><span data-repeat-index="0"></span><span data-repeat-index="1"></span><span data-repeat-index="2"></span><span data-repeat-index="3"></span><span data-repeat-index="4"></span><span data-repeat-index="5"></span><span data-repeat-index="6"></span><span data-repeat-index="7"></span><!-- /ko --> </span> </span> </span><!-- /ko --> </strong> 我尝试了很多方法来单击该按钮,但似乎没有任何效果。 我尝试过: a) driver.findElement(By.xpath("//span[contains(text(),'Sales Matrix')]")).click();. b) driver.findElement(By.xpath("//span[normalize-space()='Sales Matrix']")).click();. 我认为这是定位器问题,并且正在考虑使用一些JavascriptExecutor,但实际上不知道在这种情况下如何实现这一点。 我该怎么办? 我能够通过这样做解决这个问题: WebElement element = driver.findElement(By.xpath("//span[contains(text(),'Sales Matrix')]")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", element); 谢谢! 仅供参考,有不同的点击方式。 // Click using Action Actions actions = new Actions(browser); actions.click(tempWebElem).build().perform(); // Click using JS ((JavascriptExecutor) driver).executeScript("arguments[0].click();", tempWebElem); // Click using WebElement driver.findElement(tempElem).click(); // Click using Send Keys driver.findElement(tempElem).sendKeys(Keys.RETURN); 在我们的项目中,我将这些行放在嵌套的 try-catch 中,以便在遇到定位器问题时可以尝试其他方法。

回答 2 投票 0

从 chrome 85 开始,偶尔出现 Selenium Chrome WebDriver 超时

我有一些使用 Selenium 并在 Chrome 上运行的 .NET Core 自动化项目。构建在 Jenkins 管道中运行,当前在 Linux 构建代理上运行测试。 这些测试...

回答 2 投票 0

使用 Seleniumwire 的导入错误

我无法弄清楚是什么导致了错误。 Python 3.9、3.10。 回溯(最近一次调用最后一次): 文件“C:\Users\User\Desktop\S\SS est.py”,第 1 行,在 中 来自硒...

回答 3 投票 0

默认调用父构造函数?

我有来自 python page_object 文档的以下示例: 从 page_objects 导入 PageObject、PageElement 从硒导入网络驱动程序 类登录页面(页面对象): 用户名 = PageE...

回答 2 投票 0

如何在Robot Framework中编写多个条件的if语句

我在Robot Framework 中编写if 条件时遇到困难。 我想执行 运行关键字 If '${color}' == 'Red' OR '${color}' == 'Blue' OR '${color}' == 'Pink' 检查数量 我可以用这个...

回答 4 投票 0

如何在运行 Selenium 脚本时禁用 chrome 浏览器中的身份验证弹出窗口

在此处输入图像描述通过第一个 URL,我单击“登录”(如图所示),这会导致我需要在其中输入凭据的另一个 URL。但在该页面之前,我看到一个弹出窗口生成...

回答 2 投票 0

如何通过Selenium阻止chrome中的弹出窗口

我正在使用java和selenium来编写自动化测试脚本。这里目标自动化组织有一些提醒弹出窗口,所以在接受直接命令时会造成混乱...

回答 3 投票 0

使用脚本设置 Selenium Grid

设置硒网格: 我能够在命令提示符中使用以下命令设置网格(集线器和节点),然后能够启动浏览器并成功执行测试。 java -jar 选择...

回答 2 投票 0

如何使用路径、服务和选项启动驱动程序

我在我的应用程序中使用 Chrome、Firefox 和 Edge 的驱动程序,但总是遇到同样的问题。 因此,在这篇文章中,我以 Chrome 驱动程序为例减少了我的请求。 需要什么: 路径...

回答 2 投票 0

click() 在硒无头模式下不单击按钮

我使用 Chrome 驱动程序在远程服务器上以无头模式运行硒测试。以下步骤尝试单击按钮,但未单击该按钮。 下面的测试步骤尝试单击

回答 2 投票 0

使用 python selenium 查找 Twitter 文本框元素

我制作了自己的 Twitter 投诉机器人,如果网络掉线,它会向我的 ISP 发送推文。 代码运行得非常完美,直到它必须找到 Twitter 文本框来输入推文。 主要错误是:

回答 3 投票 0

如何使用python selenium点击iframe

我想单击 iframe 的单选按钮,但它不起作用。 我的代码是这样的。 导入时间 从硒导入网络驱动程序 Url='https://www.youtube.com/watch?v=eIStvhR347g' 驱动程序 = webdriver.Fire...

回答 2 投票 0

Selenium:打开扩展的弹出窗口

我正在尝试使用 Selenium 为我的扩展编写 E2E 测试。对于我的测试,我需要打开扩展程序的弹出页面 - 就好像用户单击扩展程序的徽标(位于右下角...

回答 2 投票 0

使用 Sail 进行明确安装后,Laravel Dusk 连接被拒绝

黄昏版本:v6.15.0 航行版本:v1.7.0 Laravel 版本:v8.43.0 PHP版本:8.0.5 Docker 引擎版本:20.10.6 操作系统:MacOS BigSur 11.3.1 设想: 在新 Lar 上清晰安装 Dusk 后...

回答 1 投票 0

选择下拉列表中的一个元素 -selenium -python

我尝试在运动下拉列表中选择运动“足球”,但无法单击它。 我尝试使用 Select() 方法: 驱动程序 = webdriver.Chrome() url =“https://www.flashscore....

回答 2 投票 0

如何使用 selenium webdriver 单击角度元素?

需要下面的帮助才能单击()我无法单击“连接”按钮。我可以在 Chrome 开发工具中找到元素,但我的程序仍然失败。 按钮 HTML : 需要下面的帮助才能单击(),我无法单击按钮“Connexion”。我可以在 Chrome devtool 中找到元素,但我的程序仍然失败。 按钮 HTML : <button class="btn btn-lg hoverableButton ng-scope" translate="LOGIN" ng-disabled="authenticationCtrl.disableMageConnectButton()" ng-click="onSubmit()">Connexion</button> 我尝试过以下代码 By button = By.xpath("//button[@class='btn btn-lg hoverableButton ng-scope' and contains(@ng-click, 'authenticationCtrl.onSubmitMage()')]"); WebDriverWait wait = new WebDriverWait(webdriver, 15); wait.until(ExpectedConditions.elementToBeClickable(button)); webdriver.findElement(button).click(); 错误信息: 预期条件失败:等待元素可点击: By.xpath: //button[@class='btn btn-lg hideableButton ng-scope' 和 contains(@ng-click, 'authenticationCtrl.onSubmitMage()')] (尝试过 15 秒,间隔 500 毫秒) 和 没有这样的元素:无法定位元素: {"method":"xpath","selector":"//按钮[@class='btn btn-lg hideableButton ng-scope' 并包含(@ng-click, 'authenticationCtrl.onSubmitMage()')]"} 我在 devtools 和 xpath 上测试了 xpath,它找到了按钮。 谢谢。 如果 webdriver.findElement(button).click(); 投掷 没有这样的元素:无法找到元素: {"method":"xpath","selector":"//按钮[@class='btn btn-lg hideableButton ng-scope' 并包含(@ng-click, 'authenticationCtrl.onSubmitMage()' 这可能是因为元素在 iframe 中或在 DOM 中找不到定位器。 既然你说它存在于 DOM 中,我可能会说,我们这里可能有一个 iframe 问题。 Iframe: 该标签指定内联框架。 内联框架用于在当前文档中嵌入另一个文档 HTML 文档。 在 Selenium 中,我们需要将驱动程序焦点切换到特定的 iframe,以便与 iframe 内的元素进行交互: driver.switchTo.frame("Frame_ID"); 然后你应该能够做到: webdriver.findElement(By.xpath("//button[text()='Connexion']")).click(); 更新1: 有两个同名按钮,我非常确定xpath索引会起作用 第一个按钮: (//button[text()='Connexion'])[1] 第二个按钮: (//button[text()='Connexion'])[2] 更新2: WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.elementToBeClickable(By.xpath("(//button[text()='Connexion'])[2]"))).click(); 我看到了长长的评论树,但没有直接的答案。那么问题出在哪里呢?

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.