天道酬勤,学无止境

selenium

aria-hidden span/button prevents from fetching element - Selenium

问题 我正在尝试使用 Selenium 和 Java(3.3.0 和 java 版本“1.8.0_66”)从以下网站单击日历。 https://www.cathaypacific.com/cx/en_US.html 要点击的目标 - 航班 - 一种方式 - 'Departing On' 按钮 无论我尝试了哪些可能的选项 - by.id、by.xpath 和 Actions、EventFiringMouse 等,这个按钮根本不会被点击。 "<div class="button-date-picker-wrapper field-group cx-inputfield"> <span class="field-label input-filled" aria-hidden="true">Departing on</span> <button id="dppju1sm" class="button-date-picker field-button from-button has-dates input-filled" role="link" type="button" data-ui-overlay-shared="true" data-ui-overlay-id="trip-dates-picker" aria-expanded="false" aria-label=

2022-07-11 09:59:17    分类:技术分享    java   html   selenium

Using extensions with Google Chrome Selenium driver

问题 我正在尝试像这样添加我的扩展: from selenium.webdriver.chrome.options import Options import os executable_path = "C:/Chrome/chromedriver.exe" os.environ["webdriver.chrome.driver"] = executable_path chrome_options = Options() chrome_options.add_extension('C:/Users/Wilson/AppData/Local/Google/Chrome/User Data/Default/Extensions') driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options) 但得到以下错误: Traceback (most recent call last): File "C:/Users/Wilson/Dropbox/xxx.py", line 77, in <module> driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options

2022-07-11 09:37:09    分类:技术分享    python   google-chrome   selenium   selenium-webdriver

How to move the browser window in Selenium 3?

问题 以下代码在旧版本的 Selenium 下工作,但在 Selenium 3 下导致超时: WebDriver driver = new ChromeDriver(); driver.manage().window().setPosition(new Point(1315, 0)); 在 Selenium 3 中移动浏览器窗口的正确方法是什么? 回答1 我相信没有办法在 Selenium 中调整浏览器窗口的大小或操作浏览器窗口。 来源:https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/1750 我过去看到的唯一简单方法就是您所做的,使用一个点并设置位置。

2022-05-17 03:28:22    分类:技术分享    java   selenium

Webdriver: How to click on a button for a specific row of a table (C#)

问题 你好, 图片中显示的表格是动态的。 测试用例是单击名称等于“测试组 2”的相应删除按钮。 请建议 C# 代码。 回答1 不知道第四个 td 下是什么,我不能肯定地说,但是您可以使用看起来像这样的 xpath 找到它。 //td[contains(text(),'Test Group 2')]/..//td[4]//button 您可能必须指定哪个按钮,因为该编辑按钮将在同一个 td 中。 回答2 您可以使用以下方法。 传递您正在寻找的值,例如“测试组 2”。 下面将循环遍历表格并停止该值。 从那里,传递下面的内容以单击垃圾桶。 tds[i + 4].Click(); 因此,请查看列,然后向右 (+) 或向左 (-) 计数。 如果您想单击分配按钮,它应该是: tds[i + 2].Click(); 如果您在“测试组 2”左侧有一个按钮,您将通过: tds[i - 1].Click(); 方法: public void ClickTableLink(string value) { var table = driver.FindElement(By.Id("assetGroup-table")); foreach (var tr in table.FindElements(By.TagName("tr"))) { var tds = tr.FindElements(By

2022-05-16 21:50:15    分类:技术分享    c#   selenium   dynamic   webdriver

Selenium Htmlunit org.openqa.selenium.ElementNotVisibleException: You may only interact with visible elements

问题 在此处输入图像描述 在选择单选按钮的问题上需要支持,尝试使用 javascript 但无法正常工作。 WebElement Select4 = driver.findElement(By.name("IsGoldMember")); Select4.click(); 回答1

2022-05-16 21:03:04    分类:技术分享    java   selenium   radio-button   htmlunit-driver

error "network connection must be enabled" while setting networkConnection with ChromeDriver

问题 我在 selenium 和 chrome 驱动程序的帮助下运行我的 Wicket 项目的 JUnit 测试。 我们的网站支持使用 manifest 和 all 的 HTML5 离线模式,我们也想测试一下。 我们像这样使用 ChromeDriver: Map<String, Object> chromeOptions = new HashMap<String, Object>(); chromeOptions.put("binary", binarylocation); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions); capabilities.setCapability(CapabilityType.SUPPORTS_NETWORK_CONNECTION, true); driver = new ChromeDriver(capabilities); 但不幸的是,在我的测试过程中尝试这个时出现错误: ((NetworkConnection) chromeDriver).setNetworkConnection(ConnectionType.NONE); 错误是:

2022-05-16 18:56:04    分类:技术分享    selenium   selenium-chromedriver

ImportError: Cannot import name 'webdriver''

问题 这是我的代码。 import sys print (sys.path) from selenium import webdriver from selenium.webdriver.common.by import BY from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC usernameStr = 'email' passwordStr = 'password' browser = webdriver.Chrome() browser.get('http://website.com') username = browser.find_element_by_xpath('//*[@id="did-ui"]/div/div/section/section/form/section/div[1]/div/label/span[2]/input') username.send_keys(usernameStr) password = browser.find_element_by_xpath('//*[@id="did-ui"]/div/div/section/section/form

2022-05-16 18:05:08    分类:技术分享    python   selenium

How to open a WebElement from a Hoover Menu Selenium JAVA

问题 您好,我是使用 selenium 的新手,我正在尝试从网页执行一些测试。 这是我的代码: System.setProperty("webdriver.gecko.driver","C:\\DRIVERS\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); //Open Portal Fiscal driver.get("http://150.23.110.111/Retenciones/"); //Find what field and enter the user and password driver.findElement(By.id("frmLogin:txtUsr")).sendKeys("arrubio"); driver.findElement(By.id("frmLogin:txtPwd")).sendKeys("gnp00gnp"); driver.findElement(By.id("frmLogin:butLogin")).click(); Actions action = new Actions(driver); WebElement we = driver.findElement(By.xpath("")); action.moveToElement(we)

2022-05-16 15:55:30    分类:技术分享    java   html   selenium   xpath   css-selectors

if else loop on Python. Checking a class name with Selenium

问题 我有这个预约系统,我必须等到链接可用。 如果此链接可用,请单击它。 如果不返回和转发(因为页面不允许我重新加载)。 并再次检查直到可用。 while True: if driver.find_element_by_class_name("linkButton"): #do somthing else: driver.back() driver.forward() #check again. 该程序不会抛出任何错误,但是当我强制if为false时else什么也不做。 我无法用不可用的链接检查它,因为在页面中直到可用这就是为什么我强制if为false 回答1 首先, find_element_*()方法不返回真/假,它们要么返回WebElement实例(这是真的),要么抛出NoSuchElementException异常(或其他异常)。 存在性检查通常通过find_elements_*()方法完成,如果找不到元素,则返回一个空列表,这是错误的: while True: if driver.find_elements_by_class_name("linkButton"): # do something else: driver.refresh() 请注意,我认为您只是想refresh()页面而不是前后移动。 而且,您还应该在尝试之间添加一些时间延迟。

2022-05-16 15:10:12    分类:技术分享    python   selenium   if-statement   pycharm

Difference between "//" and "/" in XPath?

问题 我正在尝试使用 XPath for python-selenium。 我使用此链接从教程中尝试了一些 XPath: 所以我尝试了这两种 XPath 变体。 这个表达//webengagedata//preceding-sibling::* 返回 14 个结果 而这个表达//webengagedata/preceding-sibling::* 返回 9 个结果 "//" 做什么来匹配另外 5 个结果? 回答1 / vs //一般来说 child ( / ) 和descendant-or-self ( // ) 都是XPath 中的轴。 /是/child::node()/的缩写。 使用/选择节点的直接子节点。 //是/descendant-or-self::node()/的缩写。 使用//递归地选择一个节点、它的子节点、它的孙子节点等等。 / vs //带有preceding-sibling::* 您的具体问题询问//preceding-sibling::*和/preceding-sibling::*之间的区别。 由于您的数据是异地且复杂的,因此让我们考虑一下这个现有且更简单​​的 XML: <r> <a/> <b> <c/> <d/> </b> </r> 对于这个 XML, /r/preceding-sibling::*不选择任何内容,因为r没有前面的兄弟。 /r/

2022-05-16 14:32:04    分类:技术分享    xml   selenium   xpath