相关疑难解决方法(0)

通过多个类名来查找div元素?

<div class="value test" /> 我想确定那个网络元素.它只定义了这两个类.由于className不采用空格分隔值,因此无法执行以下操作.什么是替代品?

@FindBy(className = "value test")
@CacheLookup
private WebElement test;
Run Code Online (Sandbox Code Playgroud)

css java selenium selenium-webdriver

38
推荐指数
3
解决办法
6万
查看次数

复合类名称不允许错误Webdriver

我收到以下错误:

"不允许使用复合类名称"

尝试访问web元素时,元素的类名称之间有空格.Web元素的页面源如下所示.

driver.findElement(By.className("alert alert-success"));
Run Code Online (Sandbox Code Playgroud)

<div class="alert alert-success" alert-dismissable"="" id="58417" style="display: none;">
   <button type="button" class="close hide-panel close-icon-58417" data-dismiss="alert" aria-hidden="true" style="display: inline-block;">×</button><span id="caret-58417" class="notification-caret caret-58417"></span>
   <div class="hide-panel close-icon-58417" id="58417" style="display: block;">
      <span class="glyphicon glyphicon-ok-sign"></span><strong>Success</strong> KeyLinks Updated Successfully
      <div class="notification-panel-body panel-body-58417">REST Invocation Success</div>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我试图通过CSS路径找到元素,如下所示.但是这个元素无法搜索到.

driver.findElement(By.cssSelector(".alert alert-success"));
Run Code Online (Sandbox Code Playgroud)

这是链接中给出的解决方法,但仍然没有成功.非常感谢您的帮助.

selenium-webdriver

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

不允许使用Selenium Compound类名

我有下面的代码点击一个元素来弹出一个屏幕并复制其中的文本

el1 = driver.find_element_by_id("keyDev-A")
el1.click()
el2 = driver.find_element_by_class_name("content")
print(el2.text)
Run Code Online (Sandbox Code Playgroud)

但是,当我试图selenium单击该弹出窗口中的按钮时

el3 = driver.find_element(By.CLASS_NAME, "action-btn cancel alert-display")
el3.click()
Run Code Online (Sandbox Code Playgroud)

它会产生一条错误消息: invalid selector: Compound class names not permitted

这是我试图selenium点击的HTML .该Close按钮.

<div class="nav">
    <span class="action-btn confirm prompt-display">Confirm</span>
    <span class="action-btn cancel prompt-display">Cancel</span>
    <span class="action-btn cancel alert-display">Close</span>
</div>
Run Code Online (Sandbox Code Playgroud)

我应该怎么写el3才能点击关闭按钮?

python selenium

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

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
查看次数

Selenium python find_element_by_class_name()从v 2.2到2.21停止工作 - 不能使用'Compound Class Name'

我正在使用Selenium的python库从Firefox中的html页面中抓取数据.

我不得不从Selenium 2.0更新到2.21因为服务器已经更新了Firefox.

在v 2.21中,调用find_element_by_class_name("grid-cell-inner grid-col-name")失败:

selenium.common.exceptions.WebDriverException: Message: u'Compound class names not permitted'
Run Code Online (Sandbox Code Playgroud)

我尝试访问的元素的类名是 grid-cell-inner grid-col-name

调用find_element_by_class_name()工作在v 2.2,所以逻辑是正确的,并且以前找到的数据没问题.第2.21节中有些变化.

所有Selenium示例都给出了类名foo等的简单示例,而没有我需要访问的名称类型.

为什么Selenium停止支持查找类似名称的类grid-cell inner grid-col-name,以及它们的解决方案是什么?

有人可以帮我找到带有"复合"类名的元素吗?

谢谢.

python selenium webdriver

11
推荐指数
3
解决办法
2万
查看次数

如何避免Page Object中的复合类名错误?

当我尝试使用class = "country name"在页面对象中有空格的类名时,我得到:

Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
Run Code Online (Sandbox Code Playgroud)

如何使用具有空格的类名.

例如:

class = "country name"
Run Code Online (Sandbox Code Playgroud)

selenium pageobjects page-object-gem selenium-webdriver

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

你如何使用 EC.presence_of_element_located((By.ID, "myDynamicElement")) 除了指定类而不是 ID

我正在尝试使用 Python 来抓取一个网站,该网站通过使用嵌入的 javascript 文件将数据作为响应呈现到 HTML 中来动态加载它的 HTML。因此,如果我单独使用 BeautifulSoup,我将无法检索我需要的数据,因为我的程序会在 Javascript 加载数据之前抓取它。因此,我将 selenium 库集成到我的代码中,以使我的程序在抓取网站之前等待找到某个元素。

我最初是这样做的:

element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.ID, "tabla_evolucion")))
Run Code Online (Sandbox Code Playgroud)

但我想通过执行以下操作来指定一个类:

element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))  
Run Code Online (Sandbox Code Playgroud)

这是我的其余代码:

driver_path = 'C:/webDrivers/chromedriver.exe'
driver = webdriver.Chrome(executable_path=driver_path)
driver.header_overrides = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}
url = "myurlthatIamscraping.com" 
response = driver.get(url)
html = driver.page_source
characters = len(html)
element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))

print(html)
print(characters)
time.sleep(10)
driver.quit()
Run Code Online (Sandbox Code Playgroud)

它对我不起作用,我在任何地方都找不到正确的语法。

python selenium selenium-webdriver webdriverwait expected-condition

6
推荐指数
2
解决办法
3万
查看次数

如何在Python中使用react.js和Selenium从网页中抓取数据?

我在抓取一个使用的网站时遇到一些困难react.js,但不确定为什么会发生这种情况。

这是网站的 html: 在此输入图像描述

我想做的是单击带有 的按钮class: play-pause-button btn btn -naked。但是,当我使用 Mozilla gecko webdriver 加载页面时,会抛出异常

Message: Unable to locate element: .play-pause-button btn btn-naked
Run Code Online (Sandbox Code Playgroud)

这让我觉得也许我应该做点别的事情来获得这个元素?到目前为止,这是我的代码:

driver.get("https://drawittoknowit.com/course/neurological-system/anatomy/peripheral-nervous-system/1332/brachial-plexus---essentials")
    # execute script to scroll down the page
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
    time.sleep(10)        
    soup = BeautifulSoup(driver.page_source, 'lxml')
    print(driver.page_source)
    play_button = driver.find_element_by_class_name("play-pause-button btn btn-naked").click()
    print(play_button)
Run Code Online (Sandbox Code Playgroud)

有谁知道我该如何解决这个问题?任何帮助深表感谢

python selenium web-scraping reactjs webdriverwait

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

如何使用 Selenium 和 Python 定位具有多个类名的元素

我试图单击以下类名 equals 的元素"clean right"

<li class="clean right"></li>
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过使用找到它driver.find_element_by_class_name()

python selenium xpath classname css-selectors

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

按类别查找命令不起作用

https://www.n11.com/telefon-ve-aksesuarlari/cep-telefonu-aksesuarlari

在此网站上,我试图单击(下一页按钮)

我想抓住这条线

<a href="https://www.n11.com/telefon-ve-aksesuarlari/cep-telefonu-aksesuarlari?pg=3" class="next navigation"></a>
Run Code Online (Sandbox Code Playgroud)

我在程序中编写此代码

data=driver.find_elements_by_class_name("next navigation")
Run Code Online (Sandbox Code Playgroud)

我的问题是关于这个问题。

python selenium xpath css-selectors webdriverwait

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