selenium-webdriver 相关问题

Selenium-WebDriver提供WebDriver API,用于控制不同编程语言的浏览器(“语言绑定”)。使用此标记时,还要为正在使用的编程语言添加标记。

如何知道元素是否位于iframe中?

我无法找到红色圆圈中的元素,并相信它可能位于框架中。元素: 我无法找到红色圆圈中的元素,并且相信它可能位于框架中。元素: <button rpl="" class="upload-media action button-small px-[var(--rem6)] button-secondary icon items-center justify-center button inline-flex " id="device-upload-button" type="button"> <!--?lit$869276182$--><!----><span class="flex items-center justify-center"> <!--?lit$869276182$--><span class="flex"><!--?lit$869276182$--><svg rpl="" fill="currentColor" height="16" icon-name="upload-outline" viewBox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"> <!--?lit$869276182$--><!--?lit$869276182$--><path d="m10.513 5.63 3.929 3.928-.884.884-2.933-2.933V19h-1.25V7.51l-2.933 2.932-.884-.884L9.67 5.446l.589-.029.254.212Zm5.859-1.482A6.876 6.876 0 0 0 10 0a6.876 6.876 0 0 0-6.372 4.148A4.639 4.639 0 0 0 0 8.625a4.716 4.716 0 0 0 4.792 4.625V12A3.465 3.465 0 0 1 1.25 8.625 3.412 3.412 0 0 1 4.189 5.31l.364-.06.123-.35A5.607 5.607 0 0 1 10 1.25a5.607 5.607 0 0 1 5.324 3.65l.123.348.364.06a3.412 3.412 0 0 1 2.939 3.317A3.465 3.465 0 0 1 15.208 12v1.25A4.716 4.716 0 0 0 20 8.625a4.639 4.639 0 0 0-3.628-4.477Z"></path><!--?--> </svg></span> <!--?lit$869276182$--> </span> <!--?lit$869276182$--><!--?--><!----><!----><faceplate-screen-reader-content><!--?lit$869276182$-->Upload files</faceplate-screen-reader-content><!----> </button> 我尝试过: driver = webdriver.Firefox() driver.get("https://www.reddit.com/r/Watchexchange/submit/?type=IMAGE") wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.ID, 'device-upload-button'))) wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="device-upload-button"]'))) wait.until(EC.presence_of_element_located((By.XPATH,'//button[contains(@class,'flex items-center justify-center')]))) 它不起作用,这让我认为它处于我需要首先切换到的框架中。这是周围的 html: 周围的html 目标元素不在 IFRAME 内,但位于 shadow-root 元素内。您可以使用 Javascript 访问 shadow-root 内的元素。尝试以下代码: # Access the shadow root using JavaScript and click it upload_btn = driver.execute_script("""return document.querySelector('r-post-media-input#post-composer_media').shadowRoot.querySelector('button#device-upload-button')""") upload_btn.click() 注意:我没有测试上述代码,因为我没有 Reddit 的登录凭据。

回答 1 投票 0

我无法使用Python访问网站上的按钮

我正在尝试使用selenium库编写Python脚本,单击此网页https://www.anbima.com.br/pt_br/informar/taxas-de-titulos-publicos.htm上的“Consultar”按钮。按钮

回答 1 投票 0

如何在Python虚拟环境中安装Chrome

文件“C:\Python312\Lib\site-packages\selenium\webdriver emote rrorhandler.py”,第 229 行,在 check_response 中 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.

回答 1 投票 0

如何安装我的 geckodriver 并找到它?在 PATH 中找不到 Firefox 二进制文件。确保已安装 Firefox。操作系统似乎是:MAC

请帮忙。当我尝试启动 Firefox 浏览器时,我不断收到此错误。 我正在使用 Eclipse 和 Java。 我的 MacOS 是 14.5。 Firefox 版本 126.0.1(64 位)。 Geckodriver 版本 0.34.0 (

回答 1 投票 0

驱动程序通过ID查找元素

我需要帮助将照片上传到工作网站。以下参数适用于网站的每个页面,除了用于上传照片的“选择”按钮。我在用着: 登录 = driver.find_element(&...

回答 1 投票 0

使用python在selenium中定位按钮元素时遇到问题

我正在尝试找到一个按钮元素: 我正在尝试找到一个按钮元素: <button rpl="" class="login w-100 button-large px-[var(--rem14)] button-brand items-center justify-center button inline-flex " type="button"> 我尝试通过类名找到它,但是当我使用浏览器中的检查元素复制它时,它的格式是空格和 3 个换行符,如下所示: login w-100 button-large px-[var(--rem14)] button-brand items-center justify-center button inline-flex 我尝试了以下没有换行符的操作,但失败了: button = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'login w-100 button-large px-[var(-rem14)] button-brand items-center justify-center button inline-flex'))) 如何正确指定类名? By.CLASS_NAME, 'login w-100 button-large px-[var(-rem14)] button-brand items-center justify-center button inline-flex' 以上说法不正确。当有多个类时,您不能使用 CLASS_NAME 定位器策略。 尝试使用 XPATH 定位器策略: By.XPATH, "//button[contains(@class,'login w-100')]" 当您尝试在浏览器中检查元素时,如果 //button[contains(@class,'login w-100')] 此 XPath 表达式定位到 1 个元素,则上面的 XPath 定位器将起作用。先试试吧。

回答 1 投票 0

我的硒代码不想与网络驱动程序链接

我尝试自学如何使用硒编码,但无论我怎么尝试都不起作用。 从硒导入网络驱动程序 从 selenium.webdriver.chrome.service 导入服务 来自 selenium.web...

回答 1 投票 0

自动创建嵌套的foreach语句

我有一个简单的场景,我正在尝试练习,其中涉及自动创建嵌套的 foreach 语句。该方法要做的就是获取传递给该方法的 int 值,并基于此,...

回答 2 投票 0

在python 3中使用selenium选择日历上的日期

在尝试让 chromedriver 在 selenium 中选择日历中的日期时,我遇到了日期的隐藏字段。 我使用了以下代码 从硒导入网络驱动程序 来自硒。

回答 1 投票 0

在 Cloudinary 上转换图像时出错:生成的 URL 包含不需要的标签

我在这里问我的第一个问题。 我正在创建一个连接到 Telegram 的抓取程序,该程序一旦通过 Selenium 在 Amazon 上抓取,就会通过请求获取产品信息并将其作为帖子发送......

回答 1 投票 0

无法返回图片url,抓取网站时只能获取data:image/gif;base64

我设置了一个简单的 python 脚本,用于从 H&M 男装部分抓取每篇帖子的名称和图像。名称可以顺利返回,但图像网址似乎只返回

回答 1 投票 0

Selenium Xpath 不适用于自动化测试

我正在创建一个机器人来在网站中自动登录。 到目前为止,它运行良好,但我需要单击屏幕顶部的按钮,但它不起作用 谷歌检查页面的代码是 我正在创建一个机器人来在网站中自动登录。 到目前为止,它运行良好,但我需要单击屏幕顶部的一个按钮,但它不起作用 来自谷歌检查页面的代码是 <div class="remoteQuickAction ng-isolate-scope dropdown-toggle" action-title="Keyboard" action-image="keyboard-white" uib-dropdown-toggle="" aria-haspopup="true" aria-expanded="false" style="" xpath="1"> <div class="xcc-icon-keyboard-white" style="position:relative;top:2px"> </div> <div class="remoteDisableSelection ng-scope" translate="Keyboard" style="">Keyboard</div> 我已经尝试将 XPATH 设置为 //div[@action-title='Keyboard'] (//div[@action-title='Keyboard'])[1] //*[@id="toolbar2"]/div[4]/div //*[@id="toolbar2"]/div[4] 我终于明白为什么它找不到 xPath 了。 我需要切换窗口,因为之前的命令是打开一个新的弹出窗口,机器人无法理解这一点。

回答 1 投票 0

在 selenium webdriver 中使用 md-select 和 md-option 进行下拉选择

如何在 selenium webdriver 中使用 md-select 和 md-option 选择下拉列表。 选择不支持的类别。 如何在 selenium webdriver 中使用 md-select 和 md-option 选择下拉列表。 不支持选择班级。 <md-select placeholder="Filter" class="filter-select md-no-underline ng-pristine ng-valid ng-empty ng-touched" ng-model="$ctrl.dummy" aria-label="Filters" tabindex="0" aria-disabled="false" role="listbox" aria-expanded="false" aria-multiselectable="false" id="select_80" aria-invalid="false" style=""><md-select-value class="md-select-value md-select-placeholder" id="select_value_label_70"><span>Filter</span><span class="md-select-icon" aria-hidden="true"></span></md-select-value><div class="md-select-menu-container" aria-hidden="true" role="presentation" id="select_container_81"><md-select-menu role="presentation" class="_md"><md-content class="_md"> <!-- ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_93"><div class="md-text ng-binding"> Pending </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_94"><div class="md-text ng-binding"> Posted </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_95"><div class="md-text ng-binding"> Checks &amp; eChecks </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_96"><div class="md-text ng-binding"> Deposit </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --><md-option md-option-empty="" ng-repeat="filter in $ctrl.allFilters" ng-click="$ctrl.applyFilter(filter)" ng-keyup="$event.keyCode === 32 ? $ctrl.applyFilter(filter) : null" tabindex="0" class="ng-scope md-ink-ripple" role="option" aria-selected="false" id="select_option_97"><div class="md-text ng-binding"> Withdrawal </div></md-option><!-- end ngRepeat: filter in $ctrl.allFilters --> </md-content></md-select-menu></div></md-select> 假设您想从选项中选择Pending。你可以这样做: WebElement option = driver.findElement(By.id("select_option_93")); option.click(); 以下代码给出了来自selenium驱动程序的perfecto设备连接 import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import com.perfectomobile.selenium.api.IMobileDevice; import com.perfectomobile.selenium.api.IMobileDriver; import com.perfectomobile.selenium.api.IMobileWebDriver; import com.perfectomobile.selenium.params.analyze.text.MobileTextMatchMode; public class BofaApp_app extends PerfectoMobileBasicTest implements Runnable{ /* * * Class Name : PerfectoMobileBasicTest * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Mobile Native application test * The test open the BOFA app (on a real device) and looks for an ATM. * This test contains IMobileWebDriver (extension to webdriver), which allows the to get native and visual objects on mobile app * */ public BofaApp_app(IMobileDriver driver) { super(driver); } @Override public void execTest() { IMobileDevice device = ((IMobileDriver) _driver).getDevice(_DeviceId); device.open(); device.home(); IMobileWebDriver webDriver = _driver.getDevice(_DeviceId).getVisualDriver(); webDriver.findElement(By.linkText("Bofa")).click(); IMobileWebDriver init = _driver.getDevice(_DeviceId).getVisualDriver(); init.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); init.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); init.findElement(By.linkText("Account")).click(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.findElement(By.linkText("Save this online")); webDriver.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); webDriver.findElement(By.linkText("Locations")).click(); webDriver.findElement(By.linkText("Find Bank of America ATMs")); IMobileWebDriver zip = _driver.getDevice(_DeviceId).getVisualDriver(); zip.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); zip.findElement(By.linkText("zip code")).click(); sleep(2000); zip.findElement(By.linkText("zip code")).click(); sleep(2000); webDriver.manageMobile().visualOptions().textMatchOptions().setMode(MobileTextMatchMode.LAST); webDriver.manageMobile().visualOptions().ocrOptions().setLevelsLow(120); webDriver.findElement(By.linkText("Code")).sendKeys("02459"); zip.findElement(By.linkText("Done")).click(); zip.findElement(By.linkText("Go")).click(); webDriver.findElement(By.linkText("Newton MA")); } }* public class Constants { /** Project Constants */ public static final String REPORT_LIB = "C:\\Test\\"; public static final String HTML_REPORT_NAME = "Total.html"; public static final String PM_USER = "[email protected]"; public static final String PM_PASSWORD = "*************"; public static final String PM_CLOUD = "prerelease.perfectomobile.com"; } public interface ExecutionReporter { /* * * Class Name : ExecutionReporter * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Reporter allows you to build an summary report which aggregate all the executions the results and the link for the specific test report * You can find an HTML reporter in this project * */ public void reportHeader (String title); public void addLine(String testName,String deviceID,String repID,boolean status); public void closeRep(); } import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; /* * * Class Name : HTMLReporter * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * implements ExecutionReporter and create an HTML summary report * */ public class HTMLReporter implements ExecutionReporter { BufferedWriter _bw = null; public HTMLReporter (String title ) { reportHeader(title); } public void reportHeader (String title) { String repName = Constants.REPORT_LIB+ Constants.HTML_REPORT_NAME; File f = new File (repName) ; try { _bw = new BufferedWriter(new FileWriter(f)); DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); _bw.write("<p> Date :"+dateFormat.format(cal.getTime())+" </p>"); _bw.write("<p> Test Name: "+title+"</p>"); _bw.write("<p>"); _bw.write("<p>"); _bw.write("<table border=\"1\">"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void addLine(String testName,String deviceID,String repID,boolean status) { try { _bw.write("<tr>"); _bw.write("<td>"+testName+"</td>"); _bw.write("<td>"+deviceID+"</td>"); _bw.write("<td> <a href=\""+repID+"\">Report</a></td>"); _bw.write("<td>"+status+"</td>"); _bw.write("</tr>"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void closeRep() { try { _bw.write("</table></p></body></html>"); _bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } import java.lang.reflect.Constructor; import com.perfectomobile.selenium.*; import com.perfectomobile.selenium.api.*; public class MobileTest { /* * * Class Name : MobileTest * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Mobile Executer gets list of test and devices and execute it on the available devices * in this example the list arrive form array [] [] * The tests run on real devices in Perfecto Mobile cloud */ public static void main(String[] args) { System.out.println("Script started"); String host = Constants.PM_CLOUD; String user = Constants.PM_USER; String password = Constants.PM_PASSWORD; String[] [] testcase ={ // {"PerfectoTestCheckFlight","3230D2D238BECF6D"}, // {"PerfectoTestCheckFlight","4A8203C8DBAB382EE6BB8021B825A736CA734484"}, {"BofaApp_app","4A8203C8DBAB382EE6BB8021B825A736CA734484"}, // {"usAirways","3230D2D238BECF6D"} }; ExecutionReporter reporter = new HTMLReporter("Regression Test Tesults"); try { for(int i =0; i < testcase.length; i++) { IMobileDriver driver = new MobileDriver(host, user, password); String className = testcase[i][0]; String device = testcase[i][1]; PerfectoMobileBasicTest test = null; Constructor con = null; try { con = Class.forName(className).getConstructor(IMobileDriver.class); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { test = (PerfectoMobileBasicTest)con.newInstance(driver); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } //PerfectoMobileBasicTest test = new PerfectoTestCheckFlight(driver); test.setDeviceID(device); Thread t = new Thread(test); t.start(); reporter.addLine(className,device,test.getRepName(),test.getStatus()); } } catch (Exception e) { e.printStackTrace(); } finally { reporter.closeRep(); } } } import java.io.File; import java.io.InputStream; import com.perfectomobile.httpclient.MediaType; import com.perfectomobile.httpclient.utils.FileUtils; import com.perfectomobile.selenium.api.IMobileDriver; /* * * Class Name : PerfectoMobileBasicTest * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : Basic abstract perfecto mobile test - Each test need to extend this class and implement the actual test in the PerfectoMobileBasicTest * This basic test handles the driver and the device */ public abstract class PerfectoMobileBasicTest implements Runnable{ String _DeviceId = null; IMobileDriver _driver; boolean _status = true; @Override public void run() { try { execTest(); }catch (Exception e) { _status = false; } closeTest(); getRep(MediaType.HTML); } public PerfectoMobileBasicTest (IMobileDriver driver) { _driver = driver; } public Boolean getStatus() { return _status ; } public void setDeviceID(String Device) { _DeviceId= Device; } public String getRepName() { String className = this.getClass().getName(); String name = Constants.REPORT_LIB+className+_DeviceId+".HTML"; return name; } public void getRep(MediaType Type) { InputStream reportStream = ((IMobileDriver) _driver).downloadReport(Type); if (reportStream != null) { File reportFile = new File(getRepName()); FileUtils.write(reportStream, reportFile); } } public void sleep(long millis) { try { Thread.sleep(millis); } catch (InterruptedException e) { } } public void closeTest( ) { _driver.quit(); } public abstract void execTest() throws Exception ; }* import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import com.perfectomobile.selenium.api.IMobileDevice; import com.perfectomobile.selenium.api.IMobileDriver; import com.perfectomobile.selenium.api.IMobileWebDriver; /* * * Class Name : PerfectoTestCheckFlight * Author : Uzi Eilon <[email protected]> * Date : Dec 6th 2013 * * Description : * Mobile web test * the test go to united.com (on a real device) and check the status of flights number 84 * it use a web driver which connected to Perfecto Mobile cloud. * the test is based on a webDriver test */ public class PerfectoTestCheckFlight extends PerfectoMobileBasicTest implements Runnable{ public PerfectoTestCheckFlight(IMobileDriver driver) { super(driver); } @Override public void execTest() { IMobileDevice device = ((IMobileDriver) _driver).getDevice(_DeviceId); device.open(); device.home(); //device.getScreenText() //device.checkpointText("search"); WebDriver webDriver = device.getDOMDriver ("www.united.com"); webDriver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); webDriver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS); //sleep(2000); question? String url = webDriver.getCurrentUrl(); String title = webDriver.getTitle(); System.out.println("url: " + url + ", title: " + title); WebElement webElement = webDriver.findElement(By.xpath("(//#text)[53]")); webElement.click(); webElement = webDriver.findElement(By.xpath("(//@id=\"FlightNumber\")[1]")); webElement.sendKeys("84"); webDriver.findElement(By.xpath("(//INPUT)[5]")).click(); }* <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Supported Documents</title> <style> body { font-family: Arial, sans-serif; } .container { width: 80%; margin: auto; padding-top: 20px; } h1 { color: #333; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } .alphabet-nav { position: fixed; top: 20px; right: 50px; background: #f7f7f7; padding: 10px; border-radius: 5px; } .alphabet-nav a { text-decoration: none; padding: 5px; display: inline-block; color: #007bff; } section { margin-top: 20px; } </style> </head> <body> <div class="container"> <h1>Full List of Supported Documents</h1> <div class="alphabet-nav"> <a href="#C">C</a> <a href="#I">I</a> <a href="#U">U</a> </div> <section> <h2>Canada 🇨🇦</h2> <ul> <li>Driver License</li> <li>Identification Card</li> <li>Passport</li> <li>Residence Permit</li> </ul> </section> <section> <h2>India 🇮🇳</h2> <ul> <li>Passport</li> </ul> </section> <section> <h2>United Kingdom 🇬🇧</h2> <ul> <li>Driver License</li> <li>Passport</li> <li>Residence Permit Card</li> </ul> </section> <section> <h2>United States 🇺🇸</h2> <ul> <li>Driver License</li> <li>Identification Card</li> <li>Passport</li> <li>Passport Card</li> <li>Permanent Resident Card</li> </ul> </section> </div> </body> </html>

回答 3 投票 0

selenium 未打开新网址

在下面的代码中,应该去3个URL,但它只去1个。我该如何解决这个问题?你能帮助我吗? myURLs = ["https://google.com", "https://x.com", "https://cnn.com&quo...

回答 1 投票 0

如何使用 Selenium/Node 容器的 noVNC 功能显示正在运行的测试的实时预览

使用selenium/node-docker和selenium/hub如何访问http://:7900?autoconnect=1&resize=scale&password=secret上显示的novnc实时预览 这是我的 docker-c...

回答 1 投票 0

在 selenium 中显示运行测试的实时预览

使用selenium/node-docker和selenium/hub如何访问http://:7900?autoconnect=1&resize=scale&password=secret上显示的novnc实时预览 这是我的 docker-c...

回答 1 投票 0

无法使用 Jmeter-Webdriver 访问方法

var pkg = JavaImporter(org.openqa.selenium) var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait) var wait = new support_ui.WebDriverWait(WDS.browser, 5000) **var support_page=

回答 1 投票 0

403 禁止结合使用 selenium 和 scrapy

我正在用硒刮擦,scrapy。这里,主要问题是链接init和parse。现在因为解析不接受响应,在解析中错过了 driver.get(url) 的调用 导入scrapy 从 scrapy 导入

回答 1 投票 0

selenium.webdriver.Firefox 在 nbc.com 登录页面无法正常工作

我用它来自动登录 nbc.com,nbc.com 登录页面的响应是“抱歉,我们遇到了问题”。请再试一次。而不是重定向到链接提供者页面。除此之外,pa...

回答 1 投票 0

如何让 CTRL+C 中断脚本而不关闭 Selenium WebDriver?

我的 Python 脚本使用 Selenium 来自动化 Windows 上的浏览器。我希望能够通过按 CTRL+C 来中断脚本。但即使我捕获了异常,WebDriver 也会在 int 上终止...

回答 1 投票 0

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