Questions tagged «selenium»

Selenium是用于自动化Web浏览器的流行开源工具。使用此标签时,还应包括您正在使用的特定组件的其他标签,例如,用于语言绑定的selenium-webdriver,selenium-ide,selenium-grid等。


14
使用Python在Selenium WebDriver中获取WebElement的HTML源
我正在使用Python绑定来运行Selenium WebDriver: from selenium import webdriver wd = webdriver.Firefox() 我知道我可以像这样抓取网络元素: elem = wd.find_element_by_css_selector('#my-id') 我知道我可以通过... wd.page_source 但是无论如何,有没有获得“元素来源”? elem.source # <-- returns the HTML as a string Python的Selenium Webdriver文档基本上不存在,我在代码中看不到任何能够启用该功能的东西。 对访问元素(及其子元素)的HTML的最佳方法有何想法?

28
使用Python的Selenium-Geckodriver可执行文件必须位于PATH中
我是编程的新手,Python大约2个月前开始学习,并且正在研究Sweigart的《用Python文本自动生成无聊的东西》。我正在使用IDLE,并且已经安装了硒模块和Firefox浏览器。每当我尝试运行webdriver函数时,都会得到以下信息: from selenium import webdriver browser = webdriver.Firefox() 例外:- Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00000249C0DA1080>> Traceback (most recent call last): File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__ self.stop() File "C:\Python\Python35\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop if self.process is None: AttributeError: 'Service' object has no attribute 'process' Exception …

30
调试“元素不可点击”错误
我只能在Chrome浏览器中看到。 完整的错误消息显示为: “ org.openqa.selenium.WebDriverException:元素在点(411,675)不可点击。其他元素将获得点击:...” “将获得点击”的元素位于相关元素的侧面,而不是在其顶部并且不重叠,也不在页面上移动。 我曾尝试添加偏移量,但这也不起作用。该项目位于显示的窗口中,无需滚动。

3
无头浏览器和抓取-解决方案
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 我正在尝试列出适用于浏览器自动测试套装和能够抓取的无头浏览器平台的可能解决方案。 浏览器测试/报废: 硒 - 通晓多国语言的浏览器自动化的旗舰,为Python和Ruby,JavaScript中,C#,Haskell和更多,IDE的Firefox(作为扩展),更快的测试部署绑定。可以充当服务器并具有大量功能。 JAVASCRIPT PhantomJS - JavaScript使用Webkit进行无头测试,包括屏幕捕获和自动化。从1.8版开始,Selenium的WebDriver API已实现,因此您可以使用任何WebDriver绑定,并且测试将与Selenium兼容 SlimerJS-与PhantomJS相似,使用Gecko(Firefox)代替WebKit CasperJS - JavaScript的,建立在两个PhantomJS和SlimerJS,具有额外的功能 幽灵驱动程序 - 的JavaScript执行的webdriver的Wire协议的PhantomJS。 新的 PhantomCSS -CSS回归测试。一个CasperJS模块,用于使用PhantomJS和 Resemble.js自动化视觉回归测试。 新 WebdriverCSS -插件为 Webdriver.io自动化视觉回归测试 新的 PhantomFlow-描述和可视化通过测试的用户流程。Web用户界面测试的实验方法。 新的 trifleJS-移植 PhantomJS API以使用Internet Explorer引擎。 新的 CasperJS IDE (商业) NODE.JS Node- phantom-弥合PhantomJS和node.js之间的鸿沟 WebDriverJs -Selenium Team对node.js的Selenium WebDriver绑定 WD.js …

18
网站可以检测到何时在chromedriver中使用硒吗?
我一直在使用Chromedriver测试Selenium,但我注意到有些页面可以检测到您正在使用Selenium,即使根本没有自动化。即使当我只是通过Selenium和Xephyr使用chrome手动浏览时,我也经常得到一个页面,指出检测到可疑活动。我已经检查了用户代理和浏览器指纹,它们与普通的chrome浏览器完全相同。 当我以普通的chrome浏览到这些站点时,一切正常,但是当我使用Selenium时,我被检测到。 从理论上讲,chromedriver和chrome在任何Web服务器上看起来都应该完全相同,但是它们可以通过某种方式检测到它。 如果您想要一些测试代码,请尝试以下方法: from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=1, size=(1600, 902)) display.start() chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--profile-directory=Default') chrome_options.add_argument("--incognito") chrome_options.add_argument("--disable-plugins-discovery"); chrome_options.add_argument("--start-maximized") driver = webdriver.Chrome(chrome_options=chrome_options) driver.delete_all_cookies() driver.set_window_size(800,800) driver.set_window_position(0,0) print 'arguments done' driver.get('http://stubhub.com') 如果浏览stubhub,您将在一个或两个请求中被重定向和“阻止”。我一直在对此进行调查,无法弄清楚他们如何分辨用户正在使用Selenium。 他们是怎么做到的呢? 编辑更新: 我在Firefox中安装了Selenium IDE插件,当我在普通的Firefox浏览器中仅使用附加插件访问stubhub.com时就被禁止了。 编辑: 当我使用Fiddler来回查看HTTP请求时,我注意到“假浏览器”的请求通常在响应标头中具有“ no-cache”。 编辑: 像这样的结果是否有办法从Javascript检测到我在Selenium Webdriver页面中,这表明应该没有办法检测何时使用Webdriver。但这证据表明并非如此。 编辑: 该站点将指纹上载到他们的服务器,但是我检查了一下,硒的指纹与使用chrome时的指纹相同。 编辑: …


10
如何在Selenium Webdriver(Python)中找到包含特定文本的元素?
我正在尝试使用Selenium(使用Python接口并在多个浏览器上)测试复杂的javascript接口。我有许多形式的按钮: <div>My Button</div> 我希望能够基于“我的按钮”(或不区分大小写的部分匹配项,例如“我的按钮”或“按钮”)搜索按钮 我发现这非常困难,在某种程度上我感觉自己缺少明显的东西。到目前为止,我最好的是: driver.find_elements_by_xpath('//div[contains(text(), "' + text + '")]') 但是,这是区分大小写的。我尝试过的另一件事是遍历页面上的所有div,并检查element.text属性。但是,每次您得到以下形式的情况: <div class="outer"><div class="inner">My Button</div></div> div.outer还使用“我的按钮”作为文本。为了解决这个问题,我尝试查看div.outer是否是div.inner的父级,但无法弄清楚该怎么做(element.get_element_by_xpath('..')返回元素的父级,但是测试不等于div.outer)。此外,至少使用Chrome网络驱动程序,迭代页面上的所有元素似乎真的很慢。 有想法吗? 编辑:这个问题有点模糊。在此处询问(并回答)一个更具体的版本:如何在Selenium WebDriver中(通过Python api)获取元素的文本而不包含子元素文本?

9
有没有一种方法可以使用Selenium WebDriver中的JavaScript通过XPath获取元素?
我正在寻找类似的东西: getElementByXpath(//html[1]/body[1]/div[1]).innerHTML 我需要使用JS获取元素的innerHTML(要在Selenium WebDriver / Java中使用它,因为WebDriver本身无法找到它),但是如何? 我可以使用ID属性,但并非所有元素都具有ID属性。 [固定] 我正在使用jsoup在Java中完成它。这符合我的需求。



30
使用Selenium将元素滚动到视图中
Selenium 1.x或2.x中是否可以滚动浏览器窗口,以使XPath标识的特定元素位于浏览器的视野中?Selenium中有一个聚焦方法,但是在FireFox中似乎并没有实际滚动视图。有人对此有任何建议吗? 我需要这样做的原因是我正在测试页面上某个元素的点击。不幸的是,除非该元素可见,否则该事件似乎不起作用。我无法控制单击元素时触发的代码,因此无法调试或对其进行修改,因此,最简单的解决方案是将项目滚动到视图中。


13
如何使用Python使用Selenium选择下拉菜单值?
我需要从中选择一个元素 下拉菜单中。 例如: <select id="fruits01" class="select" name="fruits"> <option value="0">Choose your fruits:</option> <option value="1">Banana</option> <option value="2">Mango</option> </select> 1)首先,我必须单击它。我这样做: inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click() 2)之后,我必须选择一个好的元素,让我们说Mango。 我尝试这样做,inputElementFruits.send_keys(...)但是没有用。

10
等待页面加载有Selenium WebDriver for Python
我想抓取无限滚动实现的页面的所有数据。以下python代码有效。 for i in range(100): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(5) 这意味着每次我向下滚动到底部时,我都需要等待5秒钟,这通常足以使页面完成加载新生成的内容。但是,这可能不是省时的。该页面可能会在5秒内完成新内容的加载。每次向下滚动时,如何检测页面是否完成了新内容的加载?如果我可以检测到此情况,则知道页面完成加载后,可以再次向下滚动以查看更多内容。这样更省时。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.