相关疑难解决方法(0)

webdriver的官方定位策略

官方W3c webdirver文档中,明确指出位置策略是:

State   Keyword
CSS selector    "css selector"
Link text selector  "link text"
Partial link text selector  "partial link text"
Tag name    "tag name"
XPath selector  "xpath"
Run Code Online (Sandbox Code Playgroud)

但是,Selenium的电线协议允许:

class name  
css selector
id  
name
link text
partial link text
tag name
xpath
Run Code Online (Sandbox Code Playgroud)

在理论中,Selenium的文档已经过时,"真实"的故事在新的规范文档中.然而...

我在最新的Chrome自己的Webdriver上运行了一些测试,我可以确认这一点,name并且class name两者都有效; 但是,它们不符合规格.

我记得在Chromium问题上阅读他们只会实现官方的Webdriver规范.

现在:我知道通用答案,其中"规格并不总是100%遵循"等.但是,我想知道的是:

  • 你能找到Chromium中实现这个的代码吗?(链接将是最受欢迎的)
  • 在Chromium邮件列表中是否有关于这些的讨论?
  • "非官方"命令("旧"硒规格文件中记录的)可能会留下来吗?你在哪里读到的?

javascript selenium google-chrome chromium chrome-web-driver

12
推荐指数
1
解决办法
5128
查看次数

在没有id的selenium中找到提交按钮

我有一个按钮

<input type="submit" class="button button_main" style="margin-left: 1.5rem;" value="something">
Run Code Online (Sandbox Code Playgroud)

我无法通过ID或名称找到它,需要提交表格.

我试过这样做:或者,WebDriver在每个元素上都有方便的方法"submit".如果在表单中的元素上调用它,WebDriver将向上走DOM,直到找到封闭的表单,然后调用submit.如果元素不在表单中,则会引发NoSuchElementException:element.submit() http://selenium-python.readthedocs.org/navigating.html

但是找不到提交选择器.

想法?

python selenium

7
推荐指数
1
解决办法
3万
查看次数

如何用selenium找到svg元素?

我正在构建一个 python Instagram 机器人,我试图让它点击 DM 图标,但我不知道如何选择它。

我尝试通过 Xpath 选择,但似乎无法将其导航到图标。以下是 Instagram DM 图标的 html 代码:

<svg aria-label="Messenger" class="_8-yf5 " color="#262626" fill="#262626" height="24" role="img" viewBox="0 0 24 24" width="24">
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

python selenium bots instagram

4
推荐指数
1
解决办法
5308
查看次数

如何使用 Selenium 单击按钮

我正在尝试使用 python 中的 Selenium 单击网站上的按钮,并且单击按钮工作正常,我可以看到按钮被单击,但代码此时停止运行,当我在普通浏览器中检查网站时,我可以告诉按钮还没有被点击。更具体地说,我试图单击服务器start的按钮aternos.org,并且单击效果很好,但由于某种原因,服务器的实际启动并未完成。

我的开始按钮点击代码:

start = driver.find_element(By.ID, 'start')
status = driver.find_element(By.CLASS_NAME, 'statuslabel-label').text
print(status)
if status == 'Offline':
    start.click()
    print('Starting server!')
Run Code Online (Sandbox Code Playgroud)

python selenium xpath css-selectors webdriverwait

4
推荐指数
1
解决办法
3892
查看次数

Python Selenium:等待元素可点击 - 使用 find_elements 找到元素

我正在构建一个网络抓取工具,它循环访问地址列表并在房地产网站上搜索它们。然后,它会根据我们已经了解的有关房产的信息更新一些下拉列表,然后再抓取各种信息,例如预期租金收益率。

搜索完每个地址后,可能需要一些时间才能将所需元素(例如“bathrooms_dropdown”)加载到网站上。我一直在使用它来管理它,time.sleep(x)但这很慢且不可靠,并且implictly_wait(60)似乎没有任何效果,因为我仍然经常收到“元素不存在/无法找到”错误。

我确信我需要实现 WebDriverWait,但在将其实现到我的代码中时无法计算出语法。我还没有看到任何与此结合使用的例子driver.find_elements()

任何帮助将不胜感激!

driver.get(url)
driver.implicitly_wait(60)   

# find search bar and search for address
searchBar = driver.find_element(by = By.ID, value = 'react-select-3-input')
searchBar.send_keys(address)
searchButton = driver.find_element(By.CLASS_NAME, value='sc-1mx0n6y-0').click()

# wait for elements to load
time.sleep(3) # REPLACE THIS

# find dropdown and click to open it
bathrooms_dropdown = driver.find_elements(By.CLASS_NAME, value = 'css-19bqh2r')[-2]
bathrooms_dropdown.click()  
Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver webdriverwait expected-condition

2
推荐指数
1
解决办法
6516
查看次数

使用 Selenium 更快地进行网页抓取(或更快的替代方案)

伙计们,我目前有一个工作脚本,可以从某个页面抓取 ajax 内容...问题是它需要 +- 12 秒才能运行,出于我的目的,我需要它更快。

有小费吗?

from urllib.parse import urlencode
import requests
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

def search_char():
    char_name_input = str(input('Search Character: ')) # User input / Character Name

    start_time = time.time()
    browser = webdriver.PhantomJS()


    search_url = 'https://www.tibia.com/community/?subtopic=characters' # URL 

    r = browser.get(search_url) # Searched Character Page

    element = browser.find_element_by_name("name")
    element.send_keys(char_name_input)
    element2 = browser.find_element_by_name("Submit").click()


    page = browser.find_element_by_id('Content')
    rendered_page = page.get_attribute('innerHTML')

    soup = BeautifulSoup(rendered_page, 'html.parser')



    selection …
Run Code Online (Sandbox Code Playgroud)

python ajax selenium web-scraping

1
推荐指数
1
解决办法
6386
查看次数