Selenium-WebDriver提供WebDriver API,用于控制不同编程语言的浏览器(“语言绑定”)。使用此标记时,还要为正在使用的编程语言添加标记。
Chrome 驱动程序 Selenioum 无法从 Kayak 航班搜索中按类名称获取 div 标签
我想使用类名来识别有效的搜索结果列表,然后迭代到废品价格。但是,代码仍然无法识别该类。我知道它使用了 javascript,但我认为是 selenium ...
如何使用Python + Selenium 在新选项卡中打开内容
我正在使用Python + Selenium。 正在浏览此页面 https://rovo.co/explore/activities 你会看到很多活动。 使用Python + Selenium,如何在新选项卡中打开每个活动,并切换到...
如何使用 Java 中的 Selenium WebDriver 在动态生成的 HTML 代码中通过定位器(ID、名称、XPath 或 CSS)来定位元素?
“这是我的角度代码: “这是我的角度代码: <ion-button slot="end" *ngIf="auditData.id == null" (click)="presentActionSheet(section.sectionId)" id="secMedia{{i+section.sectionId}}"> <ion-icon slot="icon-only" name="attach-outline" style="color:black;font-size: 200%;"></ion-icon> </ion-button> 当我单击离子按钮时,它会调用 Ionic Angular TypeScript 中的 presentActionSheet(section.sectionId) 函数。 async presentActionSheet(sectionId: number) { const actionSheet = await this.actionSheetCtrl.create({ header: 'Choose the type of media to be uploaded', buttons: [ { text: 'Image', icon: 'camera', handler: () => { this.clickImage(sectionId); } }, { text: 'Video', icon: 'videocam', handler: () => { this.recordVideo(sectionId); } }, { text: 'Files', icon: 'document', handler: () => { this.userInputElement.click(); this.currentSecId = sectionId; } }, { text: 'Cancel', role: 'cancel', data: { action: 'cancel', }, }, ], }); await actionSheet.present(); } 此时,它会生成动态HTML代码,例如图像的HTML代码: <button type="button" class="action-sheet-button ion-activatable ion-focusable sc-ion-action-sheet-md"> <span class="action-sheet-button-inner sc-ion-action-sheet-md"> <ion-icon aria-hidden="true" class="action-sheet-icon sc-ion-action-sheet-md md hydrated" role="img"> </ion-icon>Image </span> <ion-ripple-effect class="sc-ion-action-sheet-md md hydrated" role="presentation"> </ion-ripple-effect> </button> 那么,如何在 Java 中使用 Selenium WebDriver 编写脚本来单击图像、视频或文件?怎么定位?” 我尝试使用从 UI 复制的 XPath 来查找元素,但似乎找不到该元素。相反,我遇到了错误。 这取决于您的应用程序的行为。 对于动态元素,我们首先检查的是模式。 哪些属性值保持不变? //button[@class='action-sheet-button ion-activatable ion-focusable sc-ion-action-sheet-md'] 如果不是整个属性值,那么属性的哪一部分保持不变? //button[contains(@class='action-sheet-button')] 如果您想单击元素按钮内的图像: //button[contains(@class='action-sheet-button')]//*[@role='img'] 如果您想仅使用一个动态 Xpath 单击元素: 'When declaring dynamic element By dynamicBtnClassRole = By.xpath("//button[contains(@class='%s')]//*[@role='%s']"); 'Then when you find for an element WebElement elmButton = driver.findElement(dynamicBtnClassRole.asBy(strClass, strRole); elmButton.click(); 答案取决于您想要实现的目标
如何编写脚本来测试使用 Selenium WebDriver 和 Java 在 Ionic Angular 中实现的下拉功能?
如何用 Java 编写 Selenium WebDriver 脚本来与此 Ionic Angular 下拉菜单交互? 我想单击下拉列表并从列表中选择一个元素。 下拉菜单中的选项...
早上好, 我在 Zimbra 上创建了一个约会,我希望能够搜索其标题包含 permanent 的约会,以便我可以单击它。 附上一些物品。 早上好, 我在 Zimbra 上创建了一个约会,我希望能够搜索其标题包含 permanent 的约会,以便我可以单击它。 附上一些物品。 <td class="appt_30_name" style="white-space:nowrap;">test du jour</td> /html/body/div[3]/div[10]/div/div[9]/div[1]/div[18]/div[1]/table/tbody/tr/td[2] 您对如何实现这一目标有什么想法吗? 谢谢 提供的信息有限,并假设下面是所需元素的 HTML, <td class="appt_30_name" style="white-space:nowrap;">test du jour</td> 您可以使用下面的相对 XPath 表达式来定位元素: //td[text()='test du jour']
Python Selenium 未从表获取 .text 属性
我在从标签中抓取 .text 属性时遇到问题。我正在尝试获取“数量”列中的数量。一共有7个,如下图 我在下面附上我的代码: 来自 sel...
我在尝试使用 Jenkins.im 上的 Maven 并使用 git 作为 jenkins 上的源代码管理来构建我的 Selenium 测试自动化项目时遇到了问题。该项目配置有 J...
这是Python中selenium webdriver边缘到调试器地址的正确逻辑吗?
我正在导入正确的模块,但我不断收到错误。我认为上面是如何使用调试器地址打开边缘的方法。下面的说法正确吗?我拿出了我的 webriver 路径和调试器地址...
从 chrome 85 开始,偶尔出现 Selenium Chrome WebDriver 超时
我有一些使用 Selenium 并在 Chrome 上运行的 .NET Core 自动化项目。构建在 Jenkins 管道中运行,当前在 Linux 构建代理上运行测试。 这些测试...
我实际上使用的是selenium,我需要获取可以使用下载的文件 driver.get_downloadable_files(), 但我收到以下错误: 发生异常:WebDriverExcept...
我无法弄清楚是什么导致了错误。 Python 3.9、3.10。 回溯(最近一次调用最后一次): 文件“C:\Users\User\Desktop\S\SS est.py”,第 1 行,在 中 来自硒...
如何在 Selenium Webdriver 中从 div 中查找具有 2 个属性(输入和按钮)的元素?
我的html代码是: 我的html代码是: <div class="v-datefield v-datefield-popupcalendar v-widget webdp-ui-datefield v-datefield-webdp-ui-datefield v-required v-datefield-required v-has-width v-datefield-year" id="buildingYear" style="width: 255px;"> <input type="text" class="v-textfield v-datefield-textfield" autocomplete="off" aria-describedby="gwt-uid-357" aria-controls="gwt-uid-358" id="gwt-uid-386" aria-labelledby="gwt-uid-385" aria-required="true" tabindex="0"> <button type="button" class="v-datefield-button" tabindex="-1" role="button" aria-hidden="true" aria-controls="gwt-uid-358" aria-disabled="false"></button></div> 我尝试访问输入文本(By.cssSelector)以在此字段中写入值,但不起作用。 我的代码版本是: WebElement buildingYear = wait.until(ExpectedConditions. presenceOfElementLocated(By.cssSelector("#buildingYear input"))); buildingYear.sendKeys("2024"); 错误:线程“主”org.openqa.selenium.ElementNotInteractableException 中出现异常:元素不可交互 我尝试了下一个代码,它有效: WebElement buildingYear = wait.until(ExpectedConditions. presenceOfElementLocated(By.xpath("//input[@id='gwt-uid-386']"))); //works buildingYear.sendKeys("2024"); 但是这里我遇到了@id的问题(这是动态值),我无法获取它。 如何从该 div 中选择输入值?你能帮我吗? 我有几个建议: 检查浏览器开发工具中的 CSS 选择器,确保它在该页面上是唯一的。 在浏览器中打开该页面,打开开发工具(通常是 F12),然后尝试 $$("#buildingYear input") 运行 CSS 选择器。注意:您可以使用 $x(locator) 来测试 XPath。它返回的元素是否超过 1 个?我猜它会返回多个,也许它返回的第一个是在页面的移动版本中,等等,所以它不可见,即不可交互。如果是这种情况,请尝试找到可用于分隔页面的两个(或更多)版本的父元素,例如某些页面具有高级 DIV 等,其中 id='mobile' 与 id='desktop' 或类似内容。然后您可以将定位器更改为“#desktop #buildingYear input”。 使用 ExpectedConditions.visibilityOfElementLocated() 代替 ExpectedConditions.presenceOfElementLocated()。 存在意味着该元素存在于 DOM 中,但并不意味着它是可见的并且可以与之交互。如果页面完成加载的速度有点慢,假设您的 CSS 选择器定位器在页面上是唯一的,这可能会解决问题(问题 #1)。 如果您需要查找某个元素但它不需要可见,请使用存在状态。如果您打算与其交互(从中获取文本等),请使用可见。如果您要单击它,请使用可单击的。
ChromeDriver 版本仅支持 Chrome 版本 114 当前浏览器版本为 121
StackOverflow 中针对此类问题有很长的线索,但我没有将所有问题保留在一批中,而是被要求创建一个新问题,所以这里就开始了。 此问题最初被报告...
我有来自 python page_object 文档的以下示例: 从 page_objects 导入 PageObject、PageElement 从硒导入网络驱动程序 类登录页面(页面对象): 用户名 = PageE...
尝试使用 selenium-side-runner 在命令行上运行 .side 文件时出现“WebDriverError:未知错误:Chrome 无法启动:异常退出”
我在Chrome浏览器中使用了Selenium并记录了一系列步骤。它在浏览器中运行得很好。我想让它每天自动运行一次,所以我想我应该尝试让它从
Selenium 通过 link_text 或 Xpath 查找元素 - ElementNotFoundException
我在网站上有一个href,如下所示: 转让文件 这个元素甚至是可见的...
Selenium 错误:哪个 webdrivermanager 版本支持 chrome 版本 121?
目前我使用的是5.5.2版本的webdrivermanager。出现以下错误 无法启动新会话。响应代码 500。消息:会话不存在 创建:此版本的 ChromeDriver 仅支持...
我正在抓取一个具有无限滚动的网站,并且想知道最好的方法是什么: 选项 1:刮擦和滚动(重复) 加载页面 抓取数据 滚动 抓取数据 滚动 重复 任务...
如何在 Selenium Webdriver 中使用 role = 组合框从 div 中选择元素
我的html代码是: 我的html代码是: <td class="v-formlayout-contentcell"> <div role="combobox" class="v-filterselect v-widget v-required v-filterselect-required v-has-width v-filterselect-prompt" id="envRegulations" style="width: 255px;"> <input type="text" class="v-filterselect-input" autocomplete="off" id="gwt-uid-366" aria-labelledby="gwt-uid-365" aria-required="true" style="width: 100%;" tabindex="0" dir=""> <div class="v-filterselect-button" aria-hidden="true" role="button"></div> </div> </td> <div class="v-filterselect-button" aria-hidden="true" role="button"></div> 下拉列表中有 2 个值:“是”和“否” 我尝试了许多变体(By.cssSelector、By.xPath)来强制在此字段中写入,但不起作用。 最新版本代码: WebElement environmentalRegulations = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("envRegulations"))); environmentalRegulations.sendKeys("YES"); environmentalRegulations.sendKeys(Keys.ENTER); 错误:线程“主”org.openqa.selenium.ElementNotInteractableException 中出现异常:元素不可交互 提到 id = "gwt-uid-366" 是动态值,我无法获取它。 如何从该 div 中选择一个值?你能帮我吗? WebElement environmentalRegulations = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("envRegulations"))); 更改此行以指向 input 而不是 div,如下所示 WebElement environmentalRegulations = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#envRegulations input")));
如何在运行 Selenium 脚本时禁用 chrome 浏览器中的身份验证弹出窗口
在此处输入图像描述通过第一个 URL,我单击“登录”(如图所示),这会导致我需要在其中输入凭据的另一个 URL。但在该页面之前,我看到一个弹出窗口生成...