Selenium-WebDriver提供WebDriver API,用于控制不同编程语言的浏览器(“语言绑定”)。使用此标记时,还要为正在使用的编程语言添加标记。
包测试包; 导入 org.openqa.selenium.chrome.ChromeDriver; 公共类测试类{ 公共静态无效主(字符串[] args){ // TODO 自动生成的方法存根
如何在 Selenium WebDriver 中使用 IsDisplayed()
这里我为两个按钮创建了页面工厂 @FindBy(id = "书座") WebElement SlotBooking; @FindBy(id =“继续购买”) 网络元素
当我尝试运行代码时,它首先运行得很好,但最后,链接没有被单击! 我也尝试了 .submit() 函数,但它也不起作用。 这是弹出的行: 德里...
如何单击 python selenium 中特定 div 内的按钮
<div class="account-container loggedIn svelte-2hymnw"><button type="button" class="text-center font-medium focus-within:ring-4 focus-within:outline-none inline-flex items-center justify-center px-5 py-2.5 text-sm rounded-lg icon-btn"><span class="sr-only">Account</span> <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="shrink-0 w-4 h-4 nav-icon" role="img" aria-label="user solid" viewBox="0 0 14 18"><path fill="currentColor" d="M7 9a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Zm2 1H5a5.006 5.006 0 0 0-5 5v2a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2a5.006 5.006 0 0 0-5-5Z"></path></svg></button></div> 这是 div 内的按钮。它没有特定的标识符。 我已经尝试过: driver.find_element(By.XPATH,"//div[@class='account-container.loggedIn']/button[1]").click() 其中的跨度有一个已找到的文本,但不可单击。 有人可以帮我吗? 蒂亚 你也可以用它。更好用CSS_SELECTOR。 driver.find_element(By.CSS_SELECTOR,".account-container .loggedIn .svelte-2hymnw button")
我需要一个打开 chrome 浏览器的基本代码,但该代码不起作用 我的chrome版本是版本123.0.6312.106(官方版本)(64位) https://chromedriver.chromium.org/downloads 那里...
Selenium Chromedriver:防止 span 元素出现陈旧元素异常
我目前正在尝试自动从网站收集数据。该网站本身在加载数据时不会暂停,因此我让我的程序跟踪返回的搜索结果的显示数量...
如何向右滚动到滚动后才显示在DOM中的元素? (Java 硒)
使用Java selenium ....我必须滚动到页面最右侧的元素, 但问题是该元素仅在滚动后才出现在 DOM 中。 尝试了以下c...
我遇到了这样的观点:自动测试中的 time.sleep 是一种不好的做法,请告诉我为什么以及可以使用哪些替代方法
它看起来像这样,并且没有任何其他方式工作。 还请介绍一下等待页面上的元素和等待页面加载的函数 buttonEnter = driver.find_element(By.
python 使用 data-gs 选择 xpath 并打印文本值
我想选择如下所示的范围并打印文本的值(例如下面示例中的 $1,893)。 我想选择如下所示的 span 并打印文本值(例如下面示例中的 $1,893)。 <span data-gs="CjRIaFpZbEZuN0ZPN3dBRDdYYVFCRy0tLS0tLS0tLW95bmQxMUFBQUFBR1lRU3JJR1lqSi1BEg5VQTI2NDV8VUE4ODgjMhoLCODGCxACGgNVU0Q4HHDgxgs=" aria-label="1893 US dollars" role="text">$1,893 </span> 我尝试下面的代码,但输出选择了 0 个项目。 #!/usr/bin/env python3 from selenium import webdriver from lxml import html from time import sleep def main(): driver = webdriver.Chrome() URL = "https://www.google.com/travel/flights/search?tfs=CBwQAhooEgoyMDI0LTA2LTEwagwIAhIIL20vMDFfZDRyDAgDEggvbS8wMTkxNBooEgoyMDI0LTA4LTEzagwIAxIIL20vMDE5MTRyDAgCEggvbS8wMV9kNEABSAFwAYIBCwj___________8BmAEB&tfu=EgYIAhAAGAA&hl=en-US&curr=USD" driver.get(URL) sleep(1) tree = html.fromstring(driver.page_source) flights = tree.xpath('//span[@data-gs="CjRIaFpZbEZuN0ZPN3dBRDdYYVFCRy0tLS0tLS0tLW95bmQxMUFBQUFBR1lRU3JJR1lqSi1BEg5VQTI2NDV8VUE4ODgjMhoLCODGCxACGgNVU0Q4HHDgxgs="]') print(len(flights)) for item in flights: print(item.text) driver.close() return main() data-gs属性的值不是静态的。它的值随着每个请求而变化,因此我们可以使用更好的 xpath 来解决识别价格问题。 下面的代码片段按预期工作。 from selenium import webdriver from lxml import html from time import sleep def main(): driver = webdriver.Chrome() URL = "https://www.google.com/travel/flights/search?tfs=CBwQAhooEgoyMDI0LTA2LTEwagwIAhIIL20vMDFfZDRyDAgDEggvbS8wMTkxNBooEgoyMDI0LTA4LTEzagwIAxIIL20vMDE5MTRyDAgCEggvbS8wMV9kNEABSAFwAYIBCwj___________8BmAEB&tfu=EgYIAhAAGAA&hl=en-US&curr=USD" driver.get(URL) sleep(5) tree = html.fromstring(driver.page_source) flights = tree.xpath("//div[contains(@class,'U3gSDe')]/div/div[contains(@class,'YMlIz FpEdX')]/span") print(len(flights)) for item in flights: print(item.text) driver.close() return main() 输出: 9 $1,963 $2,097 $2,385 $2,657 $2,912 $2,947 $3,079 $3,337 $5,374
我正在使用 Selenium Webdriver 使用 C# 在 Chrome 浏览器中实现自动化。 我需要检查我的网页是否在某些地区(某些 IP 范围)被阻止。所以我必须在 Chrome 浏览器中设置代理。我...
我正在尝试使用Python中的BeautifulSoup访问图像的SRC。这是图像的嵌套方式: 我正在尝试使用 Python 中的 BeautifulSoup 访问图像的 SRC。这是图像的嵌套方式: <div class="artistAndEventInfo-7c13900b"> <a class="artistAndEventInfo-48455a81" href="https://www.bandsintown.com/a/11985-perkele?came_from=257&utm_medium=web&utm_source=artist_event_page&utm_campaign=artist"> <img src="https://assets.bandsintown.com/images/fallbackImage.png" alt=""> </a> 我尝试了三种方法。 1:逻辑是我选择相关图像的父 div,然后选择其中的子 img: image = soup.select_one('[class^=artistAndEventInfo-7c13900b] img') print "band image", image 这将打印“none”。 (它应该输出SRC)。 2:使用更明确的第n个类型方法: image = soup.select_one('[class^=artistAndEventInfo-7c13900b] :nth-of-type(1) img') 但是输出仍然是“none”。 3:我也尝试过使用 Selenium: driver.find_element_by_xpath("//div[@class^=artistAndEventInfo-48455a81']") 这给了我错误: selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression //div[@class^=artistAndEventInfo-7c13900b']/img because of the following error: SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//div[@class^=artistAndEventInfo-7c13900b']/img' is not a valid XPath expression. (Session info: chrome=74.0.3729.157) (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.11.6 x86_64) 为什么我的代码在所有这些情况下都不起作用? 您的 xpath 看起来有错误 //div[@class^=artistAndEventInfo-7c13900b']/img' 应该是 //div[@class='artistAndEventInfo-7c13900b']/img' 如果你想获取图像的src,那么你应该使用下面的代码和更正后的xpath。 print(driver.find_element_xpath("//div[@class='artistAndEventInfo-7c13900b']//img").get_attribute("src")) 如果您想使用选项 1 和 2,请确保您获得如下属性 src。 print image['src'] 使用 BeautifulSoup,你可以这样做: from bs4 import BeautifulSoup html = ''' <div class="artistAndEventInfo-7c13900b"> <a class="artistAndEventInfo-48455a81" href="https://www.bandsintown.com/a/11985-perkele?came_from=257&utm_medium=web&utm_source=artist_event_page&utm_campaign=artist"> <img src="https://assets.bandsintown.com/images/fallbackImage.png" alt=""> </a> ''' soup = BeautifulSoup(html,'html5lib') img = soup.find('img') src = img['src'] print(src) 您的 div 标签类属性值可能是动态的。您可以尝试下面的方法,而不是使用完整的类属性值。 from bs4 import BeautifulSoup html='''<div class="artistAndEventInfo-7c13900b"> <a class="artistAndEventInfo-48455a81" href="https://www.bandsintown.com/a/11985-perkele?came_from=257&utm_medium=web&utm_source=artist_event_page&utm_campaign=artist"> <img src="https://assets.bandsintown.com/images/fallbackImage.png" alt=""> </a>''' soup=BeautifulSoup(html,'lxml') image = soup.select_one('div[class^=artistAndEventInfo-] img') print(image['src'])
在 Eclipse IDE 中终止运行后保持 Chrome 打开
我想在 Eclipse IDE 中终止运行后保持 Chrome 浏览器打开。 终止是指点击【停止】图标。 我已经尝试在 ChromeOptions 中添加分离,但浏览器关闭...
我正在尝试使用 selenium 进行自动登录,但它不是“写入”我的数据,也不是单击登录按钮: <p>我正在尝试使用 selenium 进行自动登录,但它不是“写入”我的数据,也不是单击登录按钮:</p> <pre><code> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TNDZLZ2&gtm_auth=&gtm_preview=&gtm_cookies_win=x" height="0" width="0" style="display:none;visibility:hidden" id="tag-manager"></iframe> <div class="popup-holder-bc full-screen content-manager " style=""> <div class="popup-middleware-bc"> <div class="popup-inner-bc"> <i class="e-p-close-icon-bc bc-i-close-remove"></i> <div class="entrance-popup-bc sign-in"> <div class="e-p-content-holder-bc"> <div class="e-p-content-bc"><div class="e-p-header-bc"> <a class="popup-t-logo-w-bc" href="/pb/"> <img class="hdr-logo-bc" src="/logo.png" alt=""></a> <div class="e-p-sections-bc"> <div class="e-p-section-item-bc"> <button class="btn s-small register " type="button" title="Inscrever-se"><span>Inscrever-se</span> </button> </div> </div> </div> <div class="e-p-body-bc"> <form class="entrance-form-bc login popup" data-scroll-lock-scrollable=""><div class="form-sign-bc"> <div class="sg-n-text-row-1-bc">Já tem uma conta?</div> <div class="sg-n-text-row-2-bc">Faça o login, estamos esperando por você!</div> <div class="entrance-f-item-bc"> <div class="form-control-bc default "> <label class="form-control-label-bc inputs"> **<input type="text" class="form-control-input-bc" name="username" step="0" value="">** <i class="form-control-input-stroke-bc"></i> <span class="form-control-title-bc ellipsis">Email / Usuário</span> </label> </div> </div> <div class="entrance-f-item-bc"> <div class="form-control-bc default has-icon "> <label class="form-control-label-bc inputs"> **<input type="password" class="form-control-input-bc" autocomplete="current-password" name="password" step="0" value="">** <i class="form-control-input-stroke-bc"> </i> <span class="form-control-title-bc ellipsis">Senha</span> </label> </div> </div> <div class="entrance-f-item-bc entrance-f-item-checkbox-bc"> <div class="checkbox-control-bc"> <label class="checkbox-control-content-bc"> <input type="checkbox" class="checkbox-control-input-bc" name="remember_me" step="0"> <i class="checkbox-control-icon-bc bc-i-checked"> </i> <p class="checkbox-control-text-bc">Lembre-se de mim</p> </label> </div> </div> <div class="entrance-form-actions-holder-bc login-ext-1"> <div class="entrance-form-action-item-bc right"> **<button class="btn a-color " type="submit" title="Entrar">**<span>Entrar</span> </button> </div> </div> </div> </form> </div> </div> </div> </div> </div> </div> </div> </code></pre> <pre><code>from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException import telebot import time import Infos driver = webdriver.Chrome() driver.get('https://www.playpix.com/pb/live-casino/home/-1/All?profile=open&account=profile&page=details') time.sleep(5) if driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]') == 1: time.sleep(5) username=driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[3]/div/label/input') password=driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[4]/div/label/input') username.send_keys(Infos.username) password.send_keys(Infos.password) time.sleep(3) log_in_button = driver.find_element_by_xpath('/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[6]/div/button') log_in_button.click() time.sleep(5) </code></pre> <p>我用“IF”来做这件事,因为代码在循环中,网站每小时都会注销我,所以我需要它检查每个循环以查找登录框何时存在并再次登录。</p> <p>尝试以不同的方式编写,但使用“相同”的方法,我在代码中还有其他查找元素工作正常,唯一的问题是登录</p> </question> <answer tick="false" vote="0"> <p>使用相对 XPath 代替绝对 XPath,这样更可靠。请参阅本文以了解有关这 2 项的更多信息。</p> <ul> <li><a href="https://www.tutorialspoint.com/what-is-the-difference-between-relative-and-absolute-xpath-in-selenium" rel="nofollow noreferrer">Selenium 中相对 XPath 和绝对 XPath 有什么区别?</a></li> </ul> <p>谈到您的代码,我无法完全确定到底出了什么问题,因为您没有共享错误/异常跟踪。假设绝对 XPath 表达式无法定位所需的元素,请更改代码以定位 <pre><code>username</code></pre>、<pre><code>password</code></pre> 和 <pre><code>login</code></pre> 按钮,如下所示。</p> <p>更改以下代码:</p> <pre><code>username=driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[3]/div/label/input') password=driver.find_element(By.XPATH, '/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[4]/div/label/input') log_in_button = driver.find_element_by_xpath('/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[6]/div/button') </code></pre> <p>致:</p> <pre><code>username = driver.find_element(By.XPATH,"//input[@name='username']") password = driver.find_element(By.XPATH,"//input[@name='password']") log_in_button = driver.find_element(By.XPATH, "//button[@title='Entrar']") </code></pre> </answer> </body></html>
无法使用引用变量访问Intellij Maven项目中的方法
我是编码新手,我会尝试尽可能具体。 我将附上我执行的步骤的图像。 我在 IntelliJ 中创建了一个 Maven 项目。新项目以及我选择创建的内容
使用 Selenium (Python) 定位不同父 div 的子元素时,多个元素保持相同
我正在尝试从房地产网站上的列表中抓取数据,并将值(例如价格、地址等...)存储在一个对象中(每个列表一个)。我首先找到所有...
find_elements_by_class_name 和所有其他 find_elements_by 函数不存在
所以我安装了 Selenium,但不知何故 find_elements_by_class_name 和所有其他 find_elements_by 函数都不存在。仅存在 find_elements() 和 find_element() 。 希望有人可以...
这是代码: 从硒导入网络驱动程序 从 selenium.webdriver.common.by 导入 从 selenium.webdriver.common.keys 导入密钥 导入时间 从 selenium.webdriver.support.ui 导入
如何为 Selenium 中的按钮提供“driver.find_element”
我是 Selenium 和 Python 的初学者,正在编写第一个代码来登录指定的网站,但被按钮部分卡住了,不知道如何为下面的按钮代码提供 XPath。 我是 Selenium 和 Python 的初学者,正在编写第一个代码来登录指定网站,但被按钮部分卡住了,不知道如何为下面的按钮代码提供 XPath。 <button class="js-tfaLoginButton Button Button--pill Button--action Loadable u-marginBottomStandard u-size1of2 u-cursorPointer u-outlineNone" type="submit" data-qa="submit_login"> Sign In </button> 尝试了以下 XPath 但不起作用: /button[@class="js-tfaLoginButton Button Button--pill Button--action Loadable u-marginBottomStandard u-size1of2 u-cursorPointer u-outlineNone"]@class 或者除了XPath还有其他方法吗? 谢谢你。 正确的 XPath 是: //button[@class="js-tfaLoginButton Button Button--pill Button--action Loadable u-marginBottomStandard u-size1of2 u-cursorPointer u-outlineNone"] 希望对您有帮助! 我们有以下几种方式来识别浏览器中的元素 ID = "id" XPATH = "xpath" LINK_TEXT = "link text" PARTIAL_LINK_TEXT = "partial link text" NAME = "name" TAG_NAME = "tag name" CLASS_NAME = "class name" CSS_SELECTOR = "css selector" 除上述定位元素的方法外。我们可以使用标签内存在的标签名或值(文本),如下所示: X路径: driver.find_elements(By.XPATH, '//button[contains(text(), "Sign In"]') 或 driver.find_element(By.XPATH, '//button[text()="Sign In"]') TAG_NAME: driver.find_elements(By.TAG_NAME, '//button')
我正在使用selenium python自动化makemytrip.com,我想逐一单击每个导航选项卡,不使用下面的代码
driver.get("https://www.makemytrip.com/") 导航 = driver.find_elements(By.XPATH,'//\*\[@id="SW"\]/div\[1 \]/div\ [2\]/div/div/nav/ul/li/span/a') 页数 = len(
使用selenium python从网站提取第三方cookie
我需要使用selenium python从任何网站上抓取所有cookie,包括第三方cookie。 第三方cookies是指网站域以外的其他域的cookies。 我尝试...