selenium-webdriver 相关问题

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

python selenium - 无法点击同意

我正在尝试抓取连接后立即请求同意的特定服务器。一旦我手动单击“我同意”,一切正常。但我想自动化整个过程,包括......

回答 1 投票 0

得到响应 200,但不使用带有 scrapy 的 selenium 来抓取数据

导入scrapy 从硒导入网络驱动程序 从 selenium.webdriver.chrome.options 导入选项 从 scrapy.selector 导入选择器 从 selenium.webdriver.common.by 导入 来自 selenium.web...

回答 1 投票 0

EC.element_to_be_clickable 条件执行成功,但是在以下行中同一元素的单击失败

查询:如标题所述,如果以下行已成功执行: element = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[text()='查看所有团队']"))) 为什么下面这行...

回答 1 投票 0

selenium chrome webdriver 访问被拒绝

我正在尝试抓取一个网站。我正在使用 Selenium Web 驱动程序,但访问被拒绝。 我尝试了以下操作: 添加选项和用户代理。 使用未检测到的 chromedriver 添加了睡眠计时器

回答 1 投票 0

driver.find_element 无法通过“class_name”找到元素

我尝试使用 driver.find_element,通过“class_name”查找按钮并单击它以扩展房间 - https://www.qantas.com/hotels/properties/18482?adults=2&checkIn=2024-04-1...

回答 1 投票 0

无法使用 selenium 运行 ChromeDriver

包测试包; 导入 org.openqa.selenium.chrome.ChromeDriver; 公共类测试类{ 公共静态无效主(字符串[] args){ // TODO 自动生成的方法存根

回答 2 投票 0

如何在 Selenium WebDriver 中使用 IsDisplayed()

这里我为两个按钮创建了页面工厂 @FindBy(id = "书座") WebElement SlotBooking; @FindBy(id =“继续购买”) 网络元素

回答 1 投票 0

为什么.click()函数不起作用?

当我尝试运行代码时,它首先运行得很好,但最后,链接没有被单击! 我也尝试了 .submit() 函数,但它也不起作用。 这是弹出的行: 德里...

回答 2 投票 0

如何单击 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")

回答 1 投票 0

如何使用selenium打开chrome浏览器

我需要一个打开 chrome 浏览器的基本代码,但该代码不起作用 我的chrome版本是版本123.0.6312.106(官方版本)(64位) https://chromedriver.chromium.org/downloads 那里...

回答 0 投票 0

Selenium Chromedriver:防止 span 元素出现陈旧元素异常

我目前正在尝试自动从网站收集数据。该网站本身在加载数据时不会暂停,因此我让我的程序跟踪返回的搜索结果的显示数量...

回答 1 投票 0

如何向右滚动到滚动后才显示在DOM中的元素? (Java 硒)

使用Java selenium ....我必须滚动到页面最右侧的元素, 但问题是该元素仅在滚动后才出现在 DOM 中。 尝试了以下c...

回答 2 投票 0

我遇到了这样的观点:自动测试中的 time.sleep 是一种不好的做法,请告诉我为什么以及可以使用哪些替代方法

它看起来像这样,并且没有任何其他方式工作。 还请介绍一下等待页面上的元素和等待页面加载的函数 buttonEnter = driver.find_element(By.

回答 1 投票 0

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

回答 1 投票 0

在 Selenium 中为 Chrome 驱动程序设置代理

我正在使用 Selenium Webdriver 使用 C# 在 Chrome 浏览器中实现自动化。 我需要检查我的网页是否在某些地区(某些 IP 范围)被阻止。所以我必须在 Chrome 浏览器中设置代理。我...

回答 4 投票 0

无法使用BeautifulSoup访问Div内的img

我正在尝试使用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&amp;utm_medium=web&amp;utm_source=artist_event_page&amp;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&amp;utm_medium=web&amp;utm_source=artist_event_page&amp;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&amp;utm_medium=web&amp;utm_source=artist_event_page&amp;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'])

回答 4 投票 0

在 Eclipse IDE 中终止运行后保持 Chrome 打开

我想在 Eclipse IDE 中终止运行后保持 Chrome 浏览器打开。 终止是指点击【停止】图标。 我已经尝试在 ChromeOptions 中添加分离,但浏览器关闭...

回答 1 投票 0

使用 Python Selenium 自动登录

我正在尝试使用 selenium 进行自动登录,但它不是“写入”我的数据,也不是单击登录按钮: <p>我正在尝试使用 selenium 进行自动登录,但它不是“写入”我的数据,也不是单击登录按钮:</p> <pre><code> &lt;iframe src=&#34;https://www.googletagmanager.com/ns.html?id=GTM-TNDZLZ2&amp;gtm_auth=&amp;gtm_preview=&amp;gtm_cookies_win=x&#34; height=&#34;0&#34; width=&#34;0&#34; style=&#34;display:none;visibility:hidden&#34; id=&#34;tag-manager&#34;&gt;&lt;/iframe&gt; &lt;div class=&#34;popup-holder-bc full-screen content-manager &#34; style=&#34;&#34;&gt; &lt;div class=&#34;popup-middleware-bc&#34;&gt; &lt;div class=&#34;popup-inner-bc&#34;&gt; &lt;i class=&#34;e-p-close-icon-bc bc-i-close-remove&#34;&gt;&lt;/i&gt; &lt;div class=&#34;entrance-popup-bc sign-in&#34;&gt; &lt;div class=&#34;e-p-content-holder-bc&#34;&gt; &lt;div class=&#34;e-p-content-bc&#34;&gt;&lt;div class=&#34;e-p-header-bc&#34;&gt; &lt;a class=&#34;popup-t-logo-w-bc&#34; href=&#34;/pb/&#34;&gt; &lt;img class=&#34;hdr-logo-bc&#34; src=&#34;/logo.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt; &lt;div class=&#34;e-p-sections-bc&#34;&gt; &lt;div class=&#34;e-p-section-item-bc&#34;&gt; &lt;button class=&#34;btn s-small register &#34; type=&#34;button&#34; title=&#34;Inscrever-se&#34;&gt;&lt;span&gt;Inscrever-se&lt;/span&gt; &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;e-p-body-bc&#34;&gt; &lt;form class=&#34;entrance-form-bc login popup&#34; data-scroll-lock-scrollable=&#34;&#34;&gt;&lt;div class=&#34;form-sign-bc&#34;&gt; &lt;div class=&#34;sg-n-text-row-1-bc&#34;&gt;Já tem uma conta?&lt;/div&gt; &lt;div class=&#34;sg-n-text-row-2-bc&#34;&gt;Faça o login, estamos esperando por você!&lt;/div&gt; &lt;div class=&#34;entrance-f-item-bc&#34;&gt; &lt;div class=&#34;form-control-bc default &#34;&gt; &lt;label class=&#34;form-control-label-bc inputs&#34;&gt; **&lt;input type=&#34;text&#34; class=&#34;form-control-input-bc&#34; name=&#34;username&#34; step=&#34;0&#34; value=&#34;&#34;&gt;** &lt;i class=&#34;form-control-input-stroke-bc&#34;&gt;&lt;/i&gt; &lt;span class=&#34;form-control-title-bc ellipsis&#34;&gt;Email / Usuário&lt;/span&gt; &lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;entrance-f-item-bc&#34;&gt; &lt;div class=&#34;form-control-bc default has-icon &#34;&gt; &lt;label class=&#34;form-control-label-bc inputs&#34;&gt; **&lt;input type=&#34;password&#34; class=&#34;form-control-input-bc&#34; autocomplete=&#34;current-password&#34; name=&#34;password&#34; step=&#34;0&#34; value=&#34;&#34;&gt;** &lt;i class=&#34;form-control-input-stroke-bc&#34;&gt; &lt;/i&gt; &lt;span class=&#34;form-control-title-bc ellipsis&#34;&gt;Senha&lt;/span&gt; &lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;entrance-f-item-bc entrance-f-item-checkbox-bc&#34;&gt; &lt;div class=&#34;checkbox-control-bc&#34;&gt; &lt;label class=&#34;checkbox-control-content-bc&#34;&gt; &lt;input type=&#34;checkbox&#34; class=&#34;checkbox-control-input-bc&#34; name=&#34;remember_me&#34; step=&#34;0&#34;&gt; &lt;i class=&#34;checkbox-control-icon-bc bc-i-checked&#34;&gt; &lt;/i&gt; &lt;p class=&#34;checkbox-control-text-bc&#34;&gt;Lembre-se de mim&lt;/p&gt; &lt;/label&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&#34;entrance-form-actions-holder-bc login-ext-1&#34;&gt; &lt;div class=&#34;entrance-form-action-item-bc right&#34;&gt; **&lt;button class=&#34;btn a-color &#34; type=&#34;submit&#34; title=&#34;Entrar&#34;&gt;**&lt;span&gt;Entrar&lt;/span&gt; &lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/form&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; </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(&#39;https://www.playpix.com/pb/live-casino/home/-1/All?profile=open&amp;account=profile&amp;page=details&#39;) time.sleep(5) if driver.find_element(By.XPATH, &#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]&#39;) == 1: time.sleep(5) username=driver.find_element(By.XPATH, &#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[3]/div/label/input&#39;) password=driver.find_element(By.XPATH, &#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[4]/div/label/input&#39;) username.send_keys(Infos.username) password.send_keys(Infos.password) time.sleep(3) log_in_button = driver.find_element_by_xpath(&#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[6]/div/button&#39;) 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, &#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[3]/div/label/input&#39;) password=driver.find_element(By.XPATH, &#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[4]/div/label/input&#39;) log_in_button = driver.find_element_by_xpath(&#39;/html/body/div[1]/div[6]/div/div/div/div/div/div[2]/form/div[1]/div[6]/div/button&#39;) </code></pre> <p>致:</p> <pre><code>username = driver.find_element(By.XPATH,&#34;//input[@name=&#39;username&#39;]&#34;) password = driver.find_element(By.XPATH,&#34;//input[@name=&#39;password&#39;]&#34;) log_in_button = driver.find_element(By.XPATH, &#34;//button[@title=&#39;Entrar&#39;]&#34;) </code></pre> </answer> </body></html>

回答 0 投票 0

无法使用引用变量访问Intellij Maven项目中的方法

我是编码新手,我会尝试尽可能具体。 我将附上我执行的步骤的图像。 我在 IntelliJ 中创建了一个 Maven 项目。新项目以及我选择创建的内容

回答 1 投票 0

使用 Selenium (Python) 定位不同父 div 的子元素时,多个元素保持相同

我正在尝试从房地产网站上的列表中抓取数据,并将值(例如价格、地址等...)存储在一个对象中(每个列表一个)。我首先找到所有...

回答 1 投票 0

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