草庐IT

Watir-WebDriver

全部标签

Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

*严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。目录准备工具:思路:具体操作:调用需要的库:启动浏览器驱动:代码主体: 完整代码(解析注释):准备工具:Python环境;安装selenium库;Python编辑器;待爬取的网站;安装好的浏览器;与浏览器版本相对应的浏览器驱动。思路:使用Python打开浏览器~~>>进入待爬取的网站~~>>模拟用户点击文章~~>>跳转至文章界面~~>>将文章界面数据保存下来~~>>关闭文章界面~~>>回到原网页~~>>模拟用户点击下一个文章~~>>将第一页全部爬取完毕~~>>模拟用户点击下一页~~>>将所有爬取完毕关闭浏览器.具体操作:调用需要的库:fr

java - Selenium WebDriver StaleElementReferenceException

运行测试时出现此错误:org.openqa.selenium.StaleElementReferenceException:元素不再附加到DOM关于如何解决上述异常的任何想法?这发生在我的网格中它有一个动态的refXpath表达式 最佳答案 我遇到了同样的问题,但找不到任何解决方案。想出了一个解决方案并将其发布在这里,希望这可以帮助遇到同样问题的人。我创建了一个类来根据它们的类型、cssselector、id等处理陈旧的元素,并像调用任何其他页面对象一样简单地调用它。publicvoidStaleElementHandleByID(

java - Selenium WebDriver StaleElementReferenceException

运行测试时出现此错误:org.openqa.selenium.StaleElementReferenceException:元素不再附加到DOM关于如何解决上述异常的任何想法?这发生在我的网格中它有一个动态的refXpath表达式 最佳答案 我遇到了同样的问题,但找不到任何解决方案。想出了一个解决方案并将其发布在这里,希望这可以帮助遇到同样问题的人。我创建了一个类来根据它们的类型、cssselector、id等处理陈旧的元素,并像调用任何其他页面对象一样简单地调用它。publicvoidStaleElementHandleByID(

java - 在 Java 中,检查 Selenium WebDriver 是否已退出的最佳方法

我需要检查一组页面对象,以查看每个页面对象是否已在其WebDriver上调用了quit()。我编写了以下方法来检查WebDriver的状态:publicstaticbooleanhasQuit(WebDriverdriver){try{driver.getTitle();returnfalse;}catch(SessionNotFoundExceptione){returntrue;}}问题是:我不喜欢通过抛出和捕获异常来发现boolean值的真相,但我似乎别无选择,因为WebDriverAPI没有提供检查驱动程序是否退出的方法。所以我的问题是,有没有更好的方法来检查WebDriver

java - 在 Java 中,检查 Selenium WebDriver 是否已退出的最佳方法

我需要检查一组页面对象,以查看每个页面对象是否已在其WebDriver上调用了quit()。我编写了以下方法来检查WebDriver的状态:publicstaticbooleanhasQuit(WebDriverdriver){try{driver.getTitle();returnfalse;}catch(SessionNotFoundExceptione){returntrue;}}问题是:我不喜欢通过抛出和捕获异常来发现boolean值的真相,但我似乎别无选择,因为WebDriverAPI没有提供检查驱动程序是否退出的方法。所以我的问题是,有没有更好的方法来检查WebDriver

java - ChromeDriver - 在 Selenium WebDriver 自动化上弹出禁用开发者模式扩展

我遇到以下问题:当我运行自动化测试时,我在Chrome中不断收到以下警报“禁用开发人员模式扩展”。有没有办法删除/禁用它?这对我来说是一个障碍,因为它让我无法通过一些测试。提前致谢 最佳答案 您是否尝试使用命令行参数禁用开发者扩展?尝试使用以下SeleniumWebDriverjava代码:System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");ChromeOptionsoptions=newChromeOptions();options.addArg

java - ChromeDriver - 在 Selenium WebDriver 自动化上弹出禁用开发者模式扩展

我遇到以下问题:当我运行自动化测试时,我在Chrome中不断收到以下警报“禁用开发人员模式扩展”。有没有办法删除/禁用它?这对我来说是一个障碍,因为它让我无法通过一些测试。提前致谢 最佳答案 您是否尝试使用命令行参数禁用开发者扩展?尝试使用以下SeleniumWebDriverjava代码:System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");ChromeOptionsoptions=newChromeOptions();options.addArg

java - 如何使用 webdriver 获取元素的所有后代?

有这个元素有子元素,那些子元素又有子元素等等。我想获取所有元素的后代元素。谢谢。 最佳答案 试试这个:(Java)Listchilds=rootWebElement.findElements(By.xpath(".//*"));(C#)IReadOnlyListchilds=rootWebElement.FindElements(By.XPath(".//*")); 关于java-如何使用webdriver获取元素的所有后代?,我们在StackOverflow上找到一个类似的问题:

java - 如何使用 webdriver 获取元素的所有后代?

有这个元素有子元素,那些子元素又有子元素等等。我想获取所有元素的后代元素。谢谢。 最佳答案 试试这个:(Java)Listchilds=rootWebElement.findElements(By.xpath(".//*"));(C#)IReadOnlyListchilds=rootWebElement.FindElements(By.XPath(".//*")); 关于java-如何使用webdriver获取元素的所有后代?,我们在StackOverflow上找到一个类似的问题:

java - 使用 Java 在 Selenium WebDriver (selenium 2) 中处理警报

我想检测是否弹出警报。目前我正在使用以下代码:try{Alertalert=webDriver.switchTo().alert();//checkifalertexists//TODOfindbetterwayalert.getText();//alerthandlinglog().info("Alertdetected:{}"+alert.getText());alert.accept();}catch(Exceptione){}问题是,如果网页的当前状态没有警报,它会等待特定的时间,直到达到超时,然后抛出异常,因此性能非常糟糕。有没有更好的方法,也许是我可以用于动态发生警报的警报